regex - 从 shell 脚本中的字符串中过滤非字母字符

标签 regex bash shell scripting

非常简单的问题,但似乎找不到简单的答案...

我正在编写一个需要删除所有非字母和非数字字符的 bash 脚本。例如。我要……

INPUT_STRING="ABC# .1-2-3"

OUTPUT_STRING= # some form of processing on $INPUT_STRING #

echo $OUTPUT_STRING
ABC123

我意识到最好使用正则表达式来解决这个问题,但不确定如何在脚本中有效地使用它。

非常感谢所有帮助...

最佳答案

您可以使用 sed 去除所有不是 a-zA-Z0-9 的字符:

$ echo "ABC# .1-2-3" | sed 's/[^a-zA-Z0-9]//g'
ABC123

所以在你的情况下,

$ INPUT_STRING="ABC# .1-2-3"
$ OUTPUT_STRING=$(echo $INPUT_STRING | sed 's/[^a-zA-Z0-9]//g')
$ echo $OUTPUT_STRING
ABC123

关于regex - 从 shell 脚本中的字符串中过滤非字母字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17167385/

相关文章:

linux - 在 bash 中提取部分文件名

macos - OS X Shell - 'Clickable' 删除文件的脚本?

linux合并两个文件不重复

shell - 如何使用 scrapy response.xpath 提取 HTML 属性的值?

c# - 删除转义序列不起作用

python - 不能在类似字节的对象上使用字符串模式 - python 的重新错误

c# - C# 中的分隔嵌套括号

regex - 复杂的正则表达式 - 查找列表中的最新日期

c - llseek 在调用 zcat all.tgz 时返回 ESPIPE | ./cycletee

xml - 根据搜索父叶字符串从 xml 中查找并打印特定字符串