删除sed匹配特殊正则表达式的行

Tho*_*mas 17 regex sed match

我尝试删除所有以一些可选的特殊字符开头的行,然后是blubb:

这就是我想要匹配的线:

#blubb
*blubb
-blubb
blubb
Run Code Online (Sandbox Code Playgroud)

多数民众赞成应该这样做,但不工作:(

sed "/^.?blubb$/d" -i special.conf  
sed "/^[#*-]?blubb$/d" -i special.conf  
Run Code Online (Sandbox Code Playgroud)

有人有正确的解决方案吗?

anu*_*ava 24

使用此sed命令:

sed -i.old '/^[#*-]\{0,1\}blubb/d' special.conf
Run Code Online (Sandbox Code Playgroud)

要么

sed -i.old -E '/^[#*-]?blubb/d' special.conf
Run Code Online (Sandbox Code Playgroud)

要么

sed -i.old -r '/^[#*-]?blubb/d' special.conf
Run Code Online (Sandbox Code Playgroud)

  • -i用于内联编辑,-r或-E用于sed中的扩展正则表达式 (5认同)
  • @chenchuk:它用作为内联编辑创建备份副本的扩展。 (3认同)
  • 你好,这对我也很有效。但我不明白选项 -i.old 和 -E 或 -r 的作用。谢谢 (2认同)