逃避加号不起作用

Tom*_*Tom 7 regex sed

我想删除所有带有3个加号的行:

+++ 3 plus signs
+ 1 plus sign
+++ 3 plus signs
Run Code Online (Sandbox Code Playgroud)

这是我的sed命令,在行开始后转义加号

sed '/^\+\+\+/d'    -> This erase all lines
sed '/^+++/d'       -> This works and show only the 1 plus sign line
Run Code Online (Sandbox Code Playgroud)

为什么?逃避加号时有什么问题吗?

Jon*_*rin 7

"快速评论.原来的sed不支持"+"元字符.如果你使用"-r"命令行选项,GNU sed可以使用它,它可以启用扩展的正则表达式."

(来源)

如果你不使用sed -r,那么你不必逃避,+因为它不被认为是元字符.

  • @Tom值得注意的是,正则表达式有3种流行的语法形式:basic,extended和perl-compatible.常规sed(不带-r)实现基本形式. (2认同)