Jak używać tail -f z grep, aby pokazać otaczające linie

16

Chciałbym zobaczyć dane wyjściowe w pliku dziennika gresed tylko przez jedną domenę, ale także następujące dwa wiersze .

Przykład:

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

pokazuje wszystkie wiersze zawierające „mydomain.de”, ale ważna informacja znajduje się w wierszu poniżej wiersza, w którym znajduje się domena

rubo77
źródło

Odpowiedzi:

25

grep ma dodatkowe opcje określające, ile wierszy przed i po wyniku:

  • -A (po)
  • -B (przed)
  • -C (w kontekście [przed + po])

W twoim przypadku potrzebujesz -A:

YOUR_COMMAND |grep -A NUMBER YOURDOMAIN

powyższe polecenie drukuje NUMBERlinie po YOURDOMAINw pliku.

Zatoka Perska
źródło
Pamiętaj jednak, że jest to rozszerzenie GNU. Jeśli korzystasz z Linuksa, grepzdecydowanie masz tę opcję. Jeśli nie, lepiej sprawdź.
Leonid
9

Spróbuj przekazać liczbę linii kontekstowych do grep.

| grep -C 5

wydrukuje 5 linii przed i po meczu.

Santosh
źródło