Wie kann ich Awk verwenden, um beim Erstellen einer Tail -f-Protokolldatei einen Unix-Zeitstempel in eine für Menschen lesbare Sprache umzuwandeln?

Wie kann ich Awk verwenden, um beim Erstellen einer Tail -f-Protokolldatei einen Unix-Zeitstempel in eine für Menschen lesbare Sprache umzuwandeln?

Ich mache derzeit einetail -f mysql.log und habe es auchfarbcodiert. Aber wie kann ich awk verwenden, um die Unix-Zeitstempel in ein für Menschen lesbares Format zu konvertieren?

tail -f /var/lib/mysql/mysql-slow.log | awk '/User@Host:/ { $0 = "\033[32m" $0 "\033[39m" } /Query_time:/ { $0 = "\033[36m" $0 "\033[39m" } 1'

Bildbeschreibung hier eingeben

Antwort1

Wenn Sie GNU awk ( gawk) haben, was normalerweise bei nicht eingebettetem Linux und Cygwin der Fall ist, dann können Sie denstrftimeFunktion.

if (match($0, /^(.*timestamp=)([0-9]+)(.*)$/, parts)) {
    time = strftime("%F %T", parts[2]);
    $0 = parts[1] time parts[3];
}

Auf einem eingebetteten System mit BusyBox verfügen Sie möglicherweise über eine eingeschränktere Version von awk, aber ein dateDienstprogramm, das die Konvertierung durchführen kann.

if (match($0, /timestamp=[0-9]+/)) {
    system("date +'%F %T' -d " substr($0, RSTART+10, RLENGTH-10)) | getline time;
    $0 = substr($0, 1, RSTART) time substr($0, RSTART+RLENGTH);
}

Mit ausschließlich POSIX-Tools gibt es keine Möglichkeit, zwischen menschenlesbaren Daten und Unix-Zeitstempeln zu konvertieren, außer Sie müssen die Berechnung selbst durchführen. (Ich weiß, dass es dafür im Web Shell- und Awk-Code gibt, aber ich habe keinen Link zur Hand.) Ich empfehle, sicherzustellen, dass Sie etwas Besseres installiert haben, z. B. Gawk, Perl, Python usw.

Antwort2

Farben verwerfen - Sie können verwenden:

# | piped at the end 
awk -F'SET timestamp=' 'NF > 1{ system("date -d @" $2) }'

Das Entfernen der Farben in der Zeile mit dem Zurücksetzen macht es schwieriger; ich vermute, dass Sie das steuern/anpassen können, indem Sie die am Ende enthaltenen Escape-Sequenzen entfernen, die sich auf dieZeitstempelPortion.

verwandte Informationen