非常简单的问题,但似乎无法找到一个简单的答案......
我正在编写一个bash脚本,需要删除所有非字母和非数字字符。例如。我想......
INPUT_STRING="ABC# .1-2-3"
OUTPUT_STRING= # some form of processing on $INPUT_STRING #
echo $OUTPUT_STRING
ABC123
我意识到使用正则表达式最好解决这个问题,但不确定如何在脚本中有效地使用它。
所有人都非常感谢...
答案 0 :(得分:9)
$ INPUT_STRING="ABC# .1-2-3"
$ printf '%s\n' "${INPUT_STRING//[![:alnum:]]}"
ABC123
答案 1 :(得分:8)
您可以使用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