Fehler beim Anzeigen des Protokolls der letzten 10 Minuten mit awk

Fehler beim Anzeigen des Protokolls der letzten 10 Minuten mit awk

Ich verwende den folgenden Befehl, um Protokolldaten der letzten 10 Minuten anzuzeigen. Das funktioniert einwandfrei, wenn der Monat gleich bleibt. Wenn der Monat jedoch geändert wird, werden keine Daten angezeigt.

awk -v d1="$D1" -v d2="$D2" '$0 > d1 && $0 < d2 || $0 ~ d2' /home/user.log

Funktioniert einwandfrei, wenn

D1="Aug  1 12:00:00"
D2="Aug  1 12:10:00"

Es werden jedoch keine Daten angezeigt, wenn

D1="Jul 31 11:55:00"
D2="Aug  1 00:05:00"

PS: Ich verwende AIX

Antwort1

Ich glaube, das liegt daran, dass tatsächlich die Zeichenfolgen verglichen werden und nicht die Daten. Bei einem Monatswechsel wird der Vergleich unterbrochen.

Versuchen Sie, das Datum anders zu formatieren, beispielsweise mit dem Epochen- oder numerischen Datumsformat.

date -d "Jul 31 11:55:00" +%s

gibt 1533063300 aus. Ebenso

date -d "Aug  1 00:05:00" +%s

gibt 1533107100 aus.

Von dort aus sollte ein einfacher Vergleich möglich sein.

verwandte Informationen