o awk é provavelmente a ferramenta canônica para esse tipo de problema.
$ cat data
foo 200 bar
foo 200 baz
bar 4 baz
$ cat data | awk '$2 != 200 { print $0 }'
bar 4 baz
Como posso filtrar alguma saída apenas por uma determinada coluna?
Eu preciso de algo assim:
tail -f logs/access_log | grep -v "200" --only-in-column=1
Por isso, quero ver apenas as linhas que não têm a string '200' na primeira coluna.
Isso funcionará:
tail -f logs/access_log | grep -v '^200[[:blank:]]'
que exclui as linhas que começam com "200" seguidas por um espaço ou uma tabulação.
Você pode escolher diferentes conjuntos de delimitadores, dependendo de suas necessidades.
tail -f logs/access_log | grep -v '^200[^[:alnum:]]'
que exclui as linhas que começam com "200" seguidas por qualquer caractere diferente de caracteres alfabéticos ou numéricos.