sed正则表达式匹配,各种括号的转义和不转义
a='>VFG037176(gb|YP_001844723) (plc) phospholipase C [Phospholipase C (VF0470)][Acinetobacter baumannii ACICU]' echo $a  | sed 's/^>\(VFG[0-9]*\)(\(.*[0-9]\{1,15\}\)) (\([^ ,]\{1,20\}\)\?) .* \[.*(\([A-Z]*[0-9]*\))\]\[\(.*\)\]/\1\t\2\t\3\t\4\t\5/g'
1.匹配使⽤的括号转义\(\)\{
2.第⼀个匹配⽤ \1 \2
[ ] 需要匹配的时候,需要转义(这个是叛徒)
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'#正确

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。