在sed中组合两个正则表达式规则以从字符串中删除不需要的字符

时间:2013-08-17 11:19:25

标签: regex bash sed

我正在尝试删除所有非字母数字字符和非空格字符以及非破折号非下划线字符

echo "$1" |sed 's/[^a-zA-Z0-9[:space:]]//g'

我想要一些像

这样的东西
echo "$1" |sed 's/[^\-\_a-zA-Z0-9[:space:]]//g'

如何将两个正则表达式规则混合在一起?

示例输入是:

a-b
a_b
ab
a..
a.b
a   b
a %b
a ^&n

我想要这个输出:

a-b
a_b
ab
a
ab
a b
a b
a n

1 个答案:

答案 0 :(得分:2)

这适用于GNU sed:

sed 's/[^-_a-zA-Z0-9[:space:]]//g' file
$ cat file
a-b
a_b
ab
a..
a.b
a   b
a %b
a ^&n

$ sed 's/[^-_a-zA-Z0-9[:space:]]//g' file
a-b
a_b
ab
a
ab
a   b
a b
a n