Protokollieren Sie die Protokolle und verwenden Sie grep, um bestimmte Zeilen auszuschließen

606
Bruno

Ich habe diese Zeile, die jede Minute in meiner Protokolldatei erscheint:

2016-03-29 21:52:46,226 INFO 200 GET /api/ping (0.0.0.0) 0.34ms 

Ich möchte taildiese Protokolldatei ohne diese Zeilen anzeigen.

Ich habe es versucht:

tail -f log.txt | grep -v "ping" 
-1
Meinen Sie damit, dass das, was Sie versucht haben, nicht funktioniert? Sébastien VALSEMEY vor 8 Jahren 0
Die Lösung wurde einige Male im Kontext anderer Shell-Befehle geschrieben. Sie sollten in der oberen rechten Ecke dieser Webseite nach "stdbuf" suchen. Gombai Sándor vor 8 Jahren 1
Worin besteht das Problem? Ich habe es gerade auf meinem Rechner ausprobiert und es funktioniert wie erwartet. `echo" ..GET / api / ping (0 .. "| grep -v" ping "` yelids 1 Ergebnis ohne Übereinstimmungen. Matt Clark vor 8 Jahren 0
@MattClark Echo Sthing ist einfach, da die Ausgabe beendet und gelöscht ist. Eine durchgehende Pipe bedeutet Pufferung, die normalerweise ein Freund ist. Wenn Sie jedoch darauf warten, dass sich der Puffer füllt und der Flush sich auf den Prozess auswirkt, ist er ein hässlicher Feind. Glücklicherweise kann es mit stdbuf unter ein paar Optionen gezähmt werden. Gombai Sándor vor 8 Jahren 0
noch immer `tail -n 0 -f test | grep -v "ping" `und führe dies in einem anderen Terminal aus" echo "..GET / api / ping (0 .." >> test "führt immer noch zu keiner Ausgabe. Ich habe dies auf 4 verschiedenen Unix-Distributionen getestet, und cygwin unter Windows: Alle haben das gleiche erwartete Verhalten. Matt Clark vor 8 Jahren 0

1 Antwort auf die Frage

0
Rhyuk

Sie könnten so etwas tun:

tail -F ~/Your.log | while read LINE;do  if [[ ! "$LINE" =~ "ping" ]]; then  echo $LINE   done fi done