仅按特定列过滤/grep 某些输出?

Mar*_*vac 6 linux grep

如何仅按特定列过滤某些输出?

我需要这样的东西:

tail -f logs/access_log | grep -v "200" --only-in-column=1
Run Code Online (Sandbox Code Playgroud)

所以我只想看到第一列中没有字符串“200”的行。

Nat*_*van 16

awk 可能是此类问题的规范工具。

$ cat data
foo 200 bar
foo 200 baz
bar 4   baz

$ cat data | awk '$2 != 200 { print $0 }'
bar 4   baz
Run Code Online (Sandbox Code Playgroud)

  • 顺便说一下,您可以将操作写为 `{print}` 甚至完全省略它(只需 `awk '$2 != 200'`),因为 `print $0` 是默认操作。 (5认同)