6

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

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

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

OUTPUT_STRING= # some form of processing on $INPUT_STRING #

echo $OUTPUT_STRING
ABC123

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

非常感谢所有帮助...

4

2 回答 2

11

您可以使用sed剥离所有不是a-z,A-Z或的字符0-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
于 2013-06-18T11:12:53.463 回答
10
$ INPUT_STRING="ABC# .1-2-3"
$ printf '%s\n' "${INPUT_STRING//[![:alnum:]]}"
ABC123
于 2013-06-18T11:20:29.887 回答