Filtrar / grep alguma saída somente por determinada coluna?

4

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.

    
por Marko Kevac 25.08.2010 / 09:25

2 respostas

13

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
    
por 25.08.2010 / 09:41
0

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.

    
por 30.08.2010 / 03:35

Tags