Ich habe eine Protokolldatei, die mit einem bestimmten Datum gespeichert wurde. Ich möchte Protokolleinträge während einer bestimmten Zeit und eines bestimmten Datumsbereichs in eine andere Datei abrufen.
Bsp: alle Einträge von 2014-12-04 00:00:00 bis 2014-12-04 17:00:00
Das Egrep-Muster enthält drei Teile. Der erste Teil umfasst alles von 00:00:00 bis 09:59:59. Der zweite Teil bezieht sich von 10:00 bis 16:59:59 auf alles und der dritte Teil auf 17:00:00.
Ihr erster "egrep" entfernt Werte, die mit "08" oder "09" beginnen (dh zwischen "08: 00" und "09: 59"), und der zweite erlaubt "17: 10", "17: 20" , `17: 30` usw., um durchzukommen.
G-Man vor 9 Jahren
0
@ G-Man Danke. Du hast recht. Ich glaube, ich habe es jetzt behoben.
Daniel Goldfarb vor 9 Jahren
0
Das sieht so aus, als sollte es funktionieren. Es könnte vereinfacht werden zu "egrep" 2014-12-04 (0 [0-9] | 1 [0-6] | 17: 00: 00) "`.
G-Man vor 9 Jahren
0
0
vembutech
Wenn Sie ein Protokoll von 4 Minuten benötigen,
grep "01/APR/2014:16:3[5-9]" logfile
gibt am 1. April 2014 zwischen 16:35 und 16:39 alle Protokolle zurück.
Angenommen, Sie benötigen die letzten 5 Tage ab dem 17. September 2014, können Sie Folgendes verwenden:
grep "1[3-7]/Sep/2011" logfile
Hofft, das hilft
0
wurtel
Sie können eine Start- und eine Endzeile auswählen, z. B. mit sed:
sed -n '/Dec 5 11:00/,/Dec 5 12:00/p' /var/log/daemon.log
Dadurch werden alle Zeilen von der ersten Zeile Dec 5 11:00bis (einschließlich) der ersten Zeile mit gedruckt Dec 5 12:00. Dies setzt voraus, dass das Protokoll zeitlich sequentiell ist (dh alle Zeilen sind in der Reihenfolge der Zeit). Mit dieser -nOption können Sie die Standardaktion für das Drucken jeder Zeile unterdrücken.
Dies setzt jedoch voraus, dass Einträge für "Dec 5 11: 00" und "Dec 5 12: 00" vorhanden sind, nicht wahr? Wenn auf "5. Dezember 10: 59" unmittelbar "5. Dezember 11: 01" folgt, kann "sed" nicht wissen, wo er anfangen soll. Und wenn es einen 5. Dezember um 11: 00 Uhr gibt, dann aber auf den 5. Dezember 11: 59 folgt, dann wird 'Sed' nicht wissen, wo er aufhören soll.
G-Man vor 9 Jahren
0
Wahr; Sie könnten den `: 00`-Teil weglassen, aber dann müsste mindestens eine Log-Zeile pro Stunde vorhanden sein. Ich persönlich würde das Skript an die Daten anpassen. vielleicht sogar etwas perl foo anwenden.
wurtel vor 9 Jahren
1