encontrar arquivos e procurar dentro da cauda

1

O seguinte está funcionando conforme o esperado.

find /opt/ -name "somefile.out" -exec grep 'Connection refused' {} \; | more

Mas se eu quiser pesquisar apenas na cauda dos arquivos encontrados, eu não posso adicionar cauda ou cauda -100 assim ...

find /opt/ -name "somefile.out" -exec grep 'Connection refused' tail {} \; | more

Qual é a melhor maneira de pesquisar texto nas últimas linhas?

    
por shantanuo 30.06.2011 / 06:12

2 respostas

2

Isso parece funcionar para mim, não tenho certeza se é a melhor maneira:

find . -name '*.log' -exec tail {} \; | grep GET | more

O principal é executar os comandos em uma ordem mais correta.

Boa sorte!

    
por 30.06.2011 / 06:28
1

Sua pergunta provavelmente já foi respondida aqui: link

Você pode usar o perl para o trabalho de tail e grep, embora (note: isso é meio que briguento por causa da surpreendente complexidade, mas deve funcionar):

find /opt/ -name "somefile.out"  -exec  perl -ne 'push @a, $_; @a = @a[@a-NUMBEROFLINES..$#a]; END { foreach (@a) { print if /PATTERN/ } }' '{}' \;

Se, em vez de um intervalo definido de linhas que você deseja analisar depois que um determinado "rodapé" for visto, o perl facilitará o uso de você:

perl -ne 'print if /footer/ .. eof() and /PATTERN/'
    
por 30.06.2011 / 07:01

Tags