Como usar tail -f com grep para mostrar as linhas circundantes

15

Gostaria de ver a saída em um arquivo de log recebido por apenas um domínio, mas também pelas duas linhas a seguir .

Exemplo:

tail -f /var/log/apache2/modsec_audit.log |grep mydomain.de

isso mostra todas as linhas que contêm "mydomain.de", mas as informações importantes estão na linha abaixo da linha, onde o domínio está incluído

rubo77
fonte

Respostas:

24

O grep possui opções extras para definir quantas linhas antes e depois do resultado:

  • -A (depois de)
  • -B (antes)
  • -C (contexto [antes + depois])

Então, no seu caso, você precisa -A:

YOUR_COMMAND |grep -A NUMBER YOURDOMAIN

o comando acima imprime as NUMBERlinhas depois YOURDOMAINno arquivo.

PersianGulf
fonte
Observe, no entanto, que esta é uma extensão GNU. Se você está no Linux, grepdefinitivamente tem essa opção. Se não estiver, é melhor verificar.
Leonid
9

Tente passar o número de linhas de contexto para grep.

| grep -C 5

imprimirá 5 linhas antes e depois da partida.

Santosh
fonte