Ubuntu,sed
去掉ze
ifze
单独就行
我得到的最接近的是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
也将是一个选择。这里,$
不是正则表达式(因为它不在 之内/.../
),而是特殊的地址文件中最后一行的内容。