删除具有特定数值的行

删除具有特定数值的行

我有一个如下所示的文件:

AA  110 B   2   ..  BB  3   ... BBB 3   D   F   3   D   D
AA  111 B   2   ..  BB  3   ... BBB 0   F   F   0   F   F
AA  112 C   2   ..  BB  3   ... BBB 0   D   F   0   D   F
AA  120 D   2   ..  FF  3   ... FFF 3   D   F   3   D   D

我想删除任何包含特定数值 0 的行。如果我这样做:

sed '/0/d' infile > newfile

然后第 1 行和第 4 行被删除,因为它们在 110 和 120 中包含“0”。我尝试了 grepgrep -v '0' infile > newfile或 awk 的其他选项,但没有成功。

我确信有一种简单的方法可以做到这一点,但找不到它。有什么想法吗?

谢谢!

答案1

添加-wgrep进行全字匹配:

$ grep -vw 0 infile 
AA  110 B   2   ..  BB  3   ... BBB 3   D   F   3   D   D
AA  120 D   2   ..  FF  3   ... FFF 3   D   F   3   D   D

答案2

尝试词边界锚

sed '/\b0\b/d' file
AA  110 B   2   ..  BB  3   ... BBB 3   D   F   3   D   D
AA  120 D   2   ..  FF  3   ... FFF 3   D   F   3   D   D

答案3

更新制表符分隔符

sed '/\t0\t/d' infile > newfile

然而,这个更安全:

sed '/\b0\b/d' infile > newfile

相关内容