Regex 在sed中组合两个正则表达式规则以从字符串中删除不需要的字符
我正在尝试删除所有非字母数字字符、非空格字符和非破折号非下划线字符Regex 在sed中组合两个正则表达式规则以从字符串中删除不需要的字符,regex,bash,sed,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 这适用于GNU
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
这适用于GNU sed:
sed的//[^-_a-zA-Z0-9[:space:]///g”文件
$cat文件
a-b
a_b
ab
A.
a、 b
a b
a%b
a^&n
$sed的/[^-_a-zA-Z0-9[:space:][]//g'文件
a-b
a_b
ab
A.
ab
a b
a b
a n
你的第二正则表达式有什么问题?请考虑添加示例输入和当前输出。这看起来应该是可行的。祝你好运。我的第二个正则表达式将错误作为无效的范围运算符,如果我将其更改为:sed的//[^-]a-zA-Z0-9[:space:]//g'没有更多错误,但不起作用。
sed的//[^-\[:alnum:::[:space:]//g'文件
也可以起作用。
$ 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