Ich versuche ein Shell-Skript zu erstellen, um einige Protokolldateien zu überwachen. Ich bin wie folgt ein Befehl:Tail -f in Grep in Schnitt funktioniert nicht richtig
tail -f /var/somelog | grep --line-buffered " some test and p l a c e h o l d e r" | cut -f 3,4,14 -d " "
die Log-Datei ist wie:
some test and p l a c e h o l d e r 3
some test and p l a c e h o l d e r 4
some test and p l a c e h o l d e r 5
some test and p l a c e h o l d e r 6
und so weiter .. Mein Problem ist, dass die Ausgabe des Befehls nicht die letzte nicht angezeigt Linie
some test and p l a c e h o l d e r 6
bis Linie
some test and p l a c e h o l d e r 7
wird zum Protokoll hinzugefügt.
Ich hoffe, ich habe mein Problem klar gemacht. Kann mir jemand helfen, das zu lösen? Danke :)
Vielleicht werden die Protokollzeilen nicht mit einem Zeilenvorschub beendet, sondern stattdessen mit einem gestartet? In diesem Fall wäre Zeile 6 nicht wirklich vollständig, bis Zeile 7 startet und diesen Zeilenvorschub bereitstellt. Wenn Sie sich die Protokolldatei mit allen Zeichen ansehen, sehen Sie am Ende der letzten Zeile einen Zeilenvorschub? –
Suchen Sie nach einer abschließenden neuen Zeile ("\ n") mit 'od -c/var/somelog'. – cdarke
Siehst du die gleiche Ausgabe mit nur 'tail -f'? Wenn das der Fall ist, hat @David es richtig angegeben. – mtk