Połączyć ogon -f z grep?

26

Cześć, chcę nadal patrzeć na plik dziennika, ale nie chcę też widzieć nieistotnych rzeczy, interesuje mnie tylko coś z „foobar”.

Więc gdybym dostosowywał plik, zrobiłbym to

 tail file | grep "foobar"

Teraz, gdy dodałem opcję -f, czy istnieje sposób, aby jakoś pokazać tylko to, czego chcę? używasz grep lub innej techniki?

użytkownik893730
źródło
1
Wygląda na to, że Twoja odpowiedź jest już napisana tutaj: stackoverflow.com/questions/5427483/…
uSlackr
1
Wygląda na to, że w pytaniu znajduje się odpowiedź xyr.
JdeBP

Odpowiedzi:

41

Prawie napisałeś odpowiedź, która brzmi:

tail -f file.log | grep "foobar"

to jest to!

Ravachol
źródło
1
Woah, masz rację, myślę, że nie spodziewałem się, że to zadziała, nadal nie mam, czy nie powinno się zdarzyć, że polecenie zakończy się po wykonaniu polecenia? Myślę, że to pokazuje, że tak nie jest, zdarza się za każdym razem, gdy pojawia się wyjście, prawda?
user893730,
3
Nie, uruchomi dwa programy równolegle, a drugi (grep) wyjdzie, gdy tylko STDOUT ogona się zamknie. To jest cały punkt potoków, strumieniowania danych :)
Ravachol,
4
Kiedy grepjest ostatnim wierszem w potoku, jego dane wyjściowe są buforowane w linii, więc widzisz filtrowane wyjście na tail -fżywo, a nie opóźnione. Zauważ, że jeśli użyjesz wielu greppoleceń, każde, którego wyjście zostało potokowane, potrzebowałoby --line-bufferedopcji (zakładając, że GNU lub BSD grep) by zachować to zachowanie.
ghoti