如果 ze 单独在线,则 sed 删除 ze

如果 ze 单独在线,则 sed 删除 ze

Ubuntu,sed去掉zeifze单独就行

我得到的最接近的是sed "s/\bze\b//g"and sed "s/^\bze\b//g",它没有产生期望的结果。

在 sed 之前:

ze.com
example.ze
zero.com
ze

sed 之后:

ze.com
example.ze
zero.com

答案1

你需要线锚而不是单词边界

$ sed '/^ze$/d' file
ze.com
example.ze
zero.com

答案2

使用grep

$ grep -vxF ze file
ze.com
example.ze
zero.com

使用的选项:

  • -v否定了匹配的意义,因此只有线条不是返回匹配的模式。

  • -x要求模式从头到尾匹配一整行。

  • -F表明grep该模式是固定字符串而不是正则表达式。


你的表达的问题sed是替换修改输入中的一行,但它永远不会删除一条线。该模式\bze\b将正确匹配完整的单词ze,但该单词也存在于其他行,而不仅仅是最后一行。

要删除带有 的行sed,请将其d命令与与您要删除的行匹配的正则表达式一起使用,例如^ze$Steeldriver 在他的回答中显示

为了具体例子(删除最后一行),

sed '$d' file

也将是一个选择。这里,$不是正则表达式(因为它不在 之内/.../),而是特殊的地址文件中最后一行的内容。

相关内容