Ich versuche, eine bestimmte Zeitstempel (in meinem Fall alle 15 Minuten) in der Protokolldatei mit sed Befehl in bash Scripting zu bekommen.Kann ich Stunden im sed-Befehl durch Variable ersetzen? [Fall geschlossen]
Meine Frage ist, kann ich die Stunden im Befehl durch eine Variable ersetzen?
Dies ist Skript, das ich will:
#!/bin/bash
hour=`date +%H` #Current Hours e.g 14:00
sed -n '/$hour:15:00/,/$hour:30:00/p' file.log | nice grep Event
Das Ergebnis wird die Logdatei von 14.15.00 bis 14.30.00 drucken. Aber es gibt ein Problem, wenn der Bereich von 45 Minuten bis 60 Minuten ist, was 14:45 - 15:00 Uhr ist. Gibt es dafür eine Lösung?
UPDATE
Dieses Problem bereits gelöst ist, für mich den Befehl unter der Arbeit.
sed -n "/${hour}:15:00/,/${hour}:30:00/p" file.log | nice grep Event
Andere Referenz: Replace a string in shell script using a variable
Danke.
== Fall geschlossen ==
Warum möchten Sie Ihre Protokolldatei ändern? – GMichael
@Michael: Ich denke, er versucht, aus der Protokolldatei in 15-Minuten-Schritten auszuwählen, anstatt zu versuchen, es zu bearbeiten. –
Sie sollten einige Zeilen der Protokolldatei anzeigen (oder zumindest den Datums-/Uhrzeitabschnitt und einige zusätzliche Felder). Ein Problem, das Sie beachten sollten, ist, dass "sed" wörtliche Übereinstimmungen ausführt. Wenn es um 14:15:00 kein protokolliertes Ereignis gab (wenn zum Beispiel eines um 14:14:59 und das nächste um 14:15:01 war), wird der Anfang des Bereichs niemals übereinstimmen. Ähnlich mit dem Ende des Bereichs. Sie könnten es besser mit "awk" machen. Müssen Sie irgendwann am Ende eines Tages (23:45 - 24:00) scannen? –