我如何才能仅根据某一列过滤某些输出?
我需要这样的东西:
tail -f logs/access_log | grep -v "200" --only-in-column=1
所以我只想看到第一列中没有字符串“200”的行。
答案1
awk 可能是解决此类问题的规范工具。
$ cat data
foo 200 bar
foo 200 baz
bar 4 baz
$ cat data | awk '$2 != 200 { print $0 }'
bar 4 baz
答案2
这将起作用:
tail -f logs/access_log | grep -v '^200[[:blank:]]'
排除以“200”开头后跟空格或制表符的行。
您可以根据需要选择不同的分隔符集。
tail -f logs/access_log | grep -v '^200[^[:alnum:]]'
排除以“200”开头并且后跟任何除字母或数字字符之外的字符的行。