[ ] 需要匹配的时候,需要转义(这个是叛徒)
echo "[ ]"|sed 's/\[.*\]/aaa/g'
( ) 需要匹配的时候,不要转义
$echo "( )"|sed 's/( )/c/g'
{ } 需要匹配的时候,不要转义
$echo "{ }"|sed 's/{ }/c/g'
当需要匹配数字,字母等使用中括号时候:
不要转义
但使用大括号作为特殊字符时候,需要转义。
$echo "333"|sed 's/[0-9]\{3\}/ccc/g'
当需要适配符,需要使用\1来替换正则表达式的对应参数时:
不能写(regrexxxx)
要写\(regrexxxx\)
$echo "{1234567}"|sed 's/{\([0-9]*\)}/\1/g'
与此对应的还有
+和*
在做为特别字符时候+必须转义为
\+
才有效,
而*则不需要。
举个例子:
echo "ccc"| sed 's/c*/aaa/g'#正确
echo "ccc"| sed 's/c\*/aaa/g'#错误
echo "ccc"| sed 's/c+/aaa/g'#错误
echo "ccc"| sed 's/c\+/aaa/g'#正确