sed 正则表达式中的反转义

  • 目录 {:toc}

两种正则

今天修复了 orange 的一个 小瑕疵。是 sed s 命令使用正则的一个小问题。

可以说s命令时sed中最重要的命令,完成输入流的查找、替换。使用格式有如下两种方式:

1
2
3
sed  "s/regexp/replacement/" input.file

sed -r "s/regexp/replacement/" input.file

和其他编程语言相比 regexp,replacement 的使用也没什么太大的区别,例如反向引用都是可以使用的。

上面第一条命令使用的是基础正则表达式(BRE) ,第二条命令中-r 表示使用的是扩展的正则表达式(ERE),其区别可 参考gnu 附录文档

反转义

sed [1]中两种正则表达式非常有意思,其两种模式互相转换[2]

元字符 不起效,如下两种方式 + 只是表示其字面量字符加号。

1
2
3
4
5
$ echo "a+b=c" | sed -n '/a+b/p'
a+b=c

$ echo "a+b=c" | sed -E -n '/a\+b/p'
a+b=c

元字符 起效,如下两种方式 + 表示匹配一个或多个。

1
2
3
4
5
$ echo "aab" | sed -n '/a\+b/p'
aab

$ echo "aab" | sed -E -n '/a+b/p'
aab

参考

  1. https://www.gnu.org/software/sed/manual/sed.html#sed-regular-expressions ↩︎
  2. https://www.gnu.org/software/sed/manual/sed.html#BRE-vs-ERE ↩︎

sed 正则表达式中的反转义
http://blog.soul11201.com/2017/06/19/sed/
作者
soul11201
发布于
2017年6月19日
许可协议