我有一个如下所示的文件:
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
添加-w
到grep
进行全字匹配:
$ 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