Ich habe eine Datei, die Folgendes enthält:
1415602803,LOGIN SUCCESS,AUTH,user2,192.168.203.63,10.146.124.73,59996,22
1415602807,LOGIN SUCCESS,AUTH,user1,172.24.31.10,172.32.1.1,48191,22
1415602811,LOGIN FAILED,AUTH,root,172.24.166.153,10.146.124.73,52506,22
1415602815,LOGIN FAILED,AUTH,user3,192.168.123.55,10.146.32.99,55750,22
Ich möchte den Zeitstempel in ein Datum in diesem Format konvertieren:
2014-11-10 02:00:03,LOGIN SUCCESS,AUTH,user2,192.168.203.63,10.146.124.73,59996,22
2014-11-10 02:00:07,LOGIN SUCCESS,AUTH,user1,172.24.31.10,172.32.1.1,48191,22
2014-11-10 02:00:11,LOGIN FAILED,AUTH,root,172.24.166.153,10.146.124.73,52506,22
2014-11-10 02:00:15,LOGIN FAILED,AUTH,user3,192.168.123.55,10.146.32.99,55750,22
Wie kann ich das machen?
Ich weiß, dass dies funktioniert: perl -pe 's/(\d+)/localtime($1)/e'
(aus dieser Frage ) aber das Ausgabeformat ist Mon Nov 10 02:00:03 2014
.
Ich weiß , dass dieser Befehl Zeitstempel in meine gewünschten Ausgabe umwandeln kann: date -d@1415602803 +"%F %H:%M:%S"
, aber ich konnte es nicht funktioniert awk
mit , system("cmd")
weil alle Zitate und so weiter.
text-processing
awk
perl
Alaa Ali
quelle
quelle
awk 'BEGIN{ print strftime("%Y-%m-%d %H:%M:%S", 0) }'
gibtawk: line 2: function strftime never defined
hier. Bitte klären Sie, dass NICHT JEDES AWK hatstrftime()
! Verwenden Sie für eine Lösung, die in den meisten (allen?) AWKs ausgeführt wird, dendate
Befehl external , um portabel zu bleiben.date
Implementierungen, die Datumsangaben zwischen Formaten als Erweiterung konvertieren können, aber die Vorgehensweise ist zwischen den Implementierungen völlig unterschiedlich. Beispielsweise verwendet die von Costas bereitgestellte Lösung eine für GNU spezifische Syntaxdate
. Wenn Sie Portabilität wünschen, verwenden Sieperl
.Wenn Sie möchten
awk
, können Sie externe Befehledate
für beliebige Datumsformate verwendenquelle
strftime()
!Sie können auch versuchen:
quelle
Ich habe vor 9 Monaten eine Frage gestellt, die als Duplikat dieser Frage markiert war. Ich habe gerade erst eine Anfrage zum Posten der Antwort gesehen, die für mich bei dieser Frage funktioniert hat. Hier ist ein Link zu dieser Frage und Antwort.
/unix//a/304009/172916
quelle