[ ] 需要匹配的時候,需要轉義(這個是叛徒)
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'#正確