Entferne die vorherigen Zeilen im Schwanz oder darunter

373
Qohelet

Ich verwende tail -foder less +F, um eine sich ändernde Protokolldatei zu beobachten. Ich weiß von einem bestimmten Punkt aus, dass die Linien, die ich suche, erscheinen werden.

Also den ganzen Müll vor diesem Punkt brauche ich nicht und würde ihn gerne irgendwie entfernen.

Gibt es eine Möglichkeit, dies zu erreichen? Muss nicht sein tailoder lessich bin nicht darauf beschränkt.

0
Angenommen, die Eingabe war "seq 100", und es war bekannt, dass nur Zeilen mit mehr als * 50 * die benötigten Zeilen hatten. Nehmen wir an, die benötigten Zeilen sind * 61 * und * 63 * ... ist das Ziel, von * 61 * bis * 100 * (40 Zeilen) oder nur * 61 * und * 63 * (2 Zeilen) zu drucken? agc vor 6 Jahren 0
Ich wünschte, es wäre so klar. Ich sehe das Programm und die Protokolle parallel und als ein bestimmter Punkt im Programm erreicht ist, weiß ich, dass die Zeile, die ich erwarte, in den nächsten 3-5 Sekunden erscheinen wird. Alles, was vor diesem Punkt in das Protokoll geschrieben wurde, ist nicht relevant und ich möchte es entfernen. Qohelet vor 6 Jahren 0

1 Antwort auf die Frage

0
gmelis

Verwenden tail -F <logfile> | grep '<string>'Sie und Sie sehen nur Zeilen mit <string>.

Ich weiß nicht auf welche Saite ich warte. Ich weiß nur, in welchem ​​Zeitraum sie in das Logfile eingelesen werden. Qohelet vor 6 Jahren 0
Sie haben also von dieser Zeit bis zu dieser Zeit etwa 09:45:00 bis 10:20:59? `awk` könnte in einem solchen Fall hilfreich sein, es sei denn, Sie möchten ein Analyseprogramm schreiben, das` python`, `perl`,` bash` oder eine andere Skriptsprache verwendet. Oder Sie können `s 'Range-Funktion von` `` verwenden, wie in `tail -F / var / log / syslog | sed -n -e '/ 09:45: /, / 10: 15: / p'`, um alle Protokolleinträge von 09:45 bis 10:15 zu drucken. gmelis vor 6 Jahren 0
Es gibt eine Zeit am Anfang, aber manchmal kommen mehr als 50 Logs pro Sekunde (nicht immer, aber manchmal). Es kann sein, dass ich 11:31:33 in eine Hälfte teilen muss und alles wegwerfen muss, und alles, was nach dem ersten Viertel von 11:31:36 liegt, ist auch nicht so interessant Qohelet vor 6 Jahren 0
Ok, es muss etwas geben, wonach du suchst. `sed`,` awk`, `grep` und piping können Sie weit genug bringen, und Sie können mit 'regex' die Form` /09:45:.*source_of_message.*begin_of_interesting_message/ einschränken, was Sie suchen. , / 10: 15. * end / ` gmelis vor 6 Jahren 0
Bisher weiß ich meistens, wie der Eintrag nicht aussieht. Meistens Dinge wie `Client: gotNewMsg type M_TRANSACTION` und andere, wie sie überall erscheinen. Bisher suche ich meistens nach anderen Nachrichten und beziehe mich auf bestimmte Objekte (aber ich weiß nicht, wie sie benannt werden. Qohelet vor 6 Jahren 0
Warum fangen Sie in diesem Fall nicht mit * Zeilen * an? Beenden Sie Ihre Befehlszeile mit etwas wie `..... | grep -v 'not_this \ | nor_this \ | none_this'`, dh `... | grep -v 'Client: gotNewMsg-Typ M_TRANSACTION' ' gmelis vor 6 Jahren 0