Ich habe eine Anwendung mit einem eigenen Protokolldateiformat. Jetzt möchte ich alle Zeilen von Protokollen mit bestimmten String-Werten wie "Schwerwiegender Fehler" innerhalb einer bestimmten Zeit erhalten. Das Log-Datenformat ist wie folgt aus:Wie bekomme ich alle Protokolle mit bestimmten Zeichenfolge Wert in den letzten ein paar Minuten
Thread-28689296: Thu Aug 25 15:18:41 2016 [ info ]: abcd efddf
Thread-28689296: Thu Aug 25 15:19:01 2016 [ info ]: xvbdfdre dfdfd
Thread-28689296: Thu Aug 25 15:19:11 2016 [ info ]: Fatal error
Thread-28689296: Thu Aug 25 15:19:41 2016 [ info ]: dfdfdfd
Wenn „jetzt“ 25. August 2016 15.19.41, ich 15.19.41 bis 15.17.41 diese Zeilen finden möchte, haben "Fataler Fehler" in meiner Protokolldatei. Daher sollte die aktuelle Zeit von Datum und vor x Minuten von "Datum x Minuten vor" sein, um bestimmte Fehlermeldungen aus dem Anwendungsprotokoll zu finden.
Wenn ich die folgende Befehlszeile:
awk -v Date="$(date "+%b %d %H:%M:%S %Y")" -v Date2="$(date -- date="2
minutes ago" "+%b %d %H:%M:%S %Y")" '$5 > Date && $5 < Date2' log_file |
grep "Fatal error"
die Variable „$ 5“ in den Zustand tatsächlich den Wert der Minute „17“ und „19“ in meinem Beispiel Log-Daten bekommt, aber es vergleicht mit einem Datumswert Das wird also nicht funktionieren.
Wie kann ich den Wert der Zeit im Protokoll Zeitstempel von $ 3 bis $ 7 Felder zu vergleichen, um den Wert der aktuellen Zeit zu vergleichen. Ich bin mit Shell-Skripten nicht so vertraut.
Vielen Dank für Ihre Beratung und Hilfe im Voraus.
Ich würde vorschlagen, die '$ 3' auf' $ 7' Felder in ein anderes Format, ein fester Länge konvertieren Eins, leichter zu vergleichen oder zu sortieren. Mein bevorzugtes ist ** 'YYYY-MM-TT HH: mm: SS' ** (oder **'% F% T' **) – Jdamian
Nein, mein Problem ist, dass ich Wert aus Datenfeld von $ 3 bis $ 7 konstruieren muss um mit der aktuellen Zeit zu vergleichen. Ich weiß nicht, ob der konstruierte Wert in der Vergleichsbedingung verwendet werden kann oder soll ich eine andere Shell-Funktion schreiben, um das zu handhaben? –