É possível filtrar a saída da cauda?

11

Eu gostaria de seguir um arquivo, mas apenas as linhas de saída que possuem uma certa string nelas. Isso é possível?

    
por Abe Miessler 04.03.2011 / 01:16

4 respostas

30

use grep. É construído apenas para esse fim.

Para encontrar linhas de um / var / log / syslog com "cron", apenas execute:

tail -f /var/log/syslog | grep cron

E como ele aceita qualquer coisa sobre stdin, você pode usá-lo na saída de qualquer outro comando também, canalizando da mesma maneira como acima (usando o símbolo |).

    
por 04.03.2011 / 01:21
7
tail -f /var/log/messages | grep "myfilterword"

Espero que ajude.

    
por 04.03.2011 / 01:19
4

Aqui estão algumas outras ideias, que embora não sejam tão simples, podem oferecer alguma flexibilidade adicional interessante:

Primeiro, você pode filtrar com awk em vez de grep:

tail -f /var/log/messages | awk '/myfilterword/'

que funciona exatamente da mesma forma que o exemplo usando grep . Você pode expandir isso usando o poder do awk, por exemplo:

tail -f /var/log/messages | \
awk '/myfilterword/ { for (i=6; i<=NF; i++) printf("%s ", $i); printf("\n")}'

que imprimirá o 6º até o último campo da saída (os campos são separados por espaços em branco)

Outra ideia semelhante é usar um perl one-liner:

tail -f /var/log/messages | perl -ne "/myfilterword/ and print"

que funciona exatamente como grep . Talvez você queira um contador de números de linha e apenas o sexto campo? Que tal isso:

tail -f /var/log/messages | \ 
perl -lane "/myfilterword/ and printf \"%6d %s\n\",++\$a,\$F[6]"

Obviamente, todos esses tipos de coisas podem ser feitos com outras ferramentas também, mas eu queria ilustrar que há algumas maneiras divertidas de usar linguagens de propósito geral como awk ou perl aqui.

    
por 04.03.2011 / 08:07
2

Outro truque digno de nota, se você tiver um arquivo CSV com cabeçalhos que deseja omitir, por exemplo:

% cat data.txt
fruit        dessert        calories
Apple        Pie            770
Banana       Pudding        625
Cherry       Cobbler        990
% tail -n +2 data.txt
Apple        Pie            770
Banana       Pudding        625
Cherry       Cobbler        990

Não importa quanto tempo a entrada para tail é, o +n -2 omitirá a primeira linha.

    
por 04.03.2011 / 15:30

Tags