2017-02-21 7 views
0

ich triyng die erste Spalte einer CSV-Format, das in Millisekunden in ein Format wie diesem Befehl wird ein Unix-Zeitstempel ist:Wie kann ich die Zeitstempelspalte in einer CSV-Datei formatieren?

date -d @$(echo "($line_date + 500)/1000" | bc) 

wo $ line_date ist so etwas wie 1487693882310

Und meine Datei hat diese Informationen:

mié feb 15 11:00:59 CET 2017,,,,,,localhost.localdomain,ServerUpDown,ServerUp,,,,,,, ,,,, 
lun feb 20 19:00:34 CET 2017,,,,,,localhost.localdomain,ServerUpDown,ServerUp,,,,,,, ,,,, 
lun feb 20 19:12:32 CET 2017,,,,,,spadmin,logout,,,,,,,, ,,,, 
lun feb 20 19:15:01 CET 2017,,,,,,System,run,Perform Maintenance,,,,,,, ,,,, 
:

1487152859086,,,,,,localhost.localdomain,ServerUpDown,ServerUp,,,,,,, ,,,, 
1487613634268,,,,,,localhost.localdomain,ServerUpDown,ServerUp,,,,,,, ,,,, 
1487614351573,,,,,,spadmin,logout,,,,,,,, ,,,, 
1487614500536,,,,,,System,run,Perform Maintenance,,,,,,, ,,,, 

ich es so sein möchte 10

Ich habe dies versucht, aber es hat nicht funktioniert:

awk 'BEGIN{FS=OFS=","}{$1=`date -d @$(echo "($date_now + 500)/1000" | bc)\`}1' file.csv 

Jede Hilfe wird viel apreciated.

Vielen Dank im Voraus.

Mit freundlichen Grüßen.

Héctor

Antwort

0

Eine Möglichkeit ist die CSV-Linie intakt und prepend es mit dem analysierten Zeitstempel als die erste Spalte zu verlassen.

Etwas wie:

gawk -F, '{ printf "%s.%03u,",strftime("%Y-%m-%dT%H:%M:%S", $1/1000),$1%1000; print }' file.csv 

Ausgänge:

2017-02-15T10:00:59.086,1487152859086,,,,,,localhost.localdomain,ServerUpDown,ServerUp,,,,,,, ,,,, 
2017-02-20T18:00:34.268,1487613634268,,,,,,localhost.localdomain,ServerUpDown,ServerUp,,,,,,, ,,,, 
2017-02-20T18:12:31.573,1487614351573,,,,,,spadmin,logout,,,,,,,, ,,,, 
2017-02-20T18:15:00.536,1487614500536,,,,,,System,run,Perform Maintenance,,,,,,, ,,,, 
+0

Das war's! Groß! Vielen Dank! – Hector

-1

Oder Sie können das erste Feld wieder aufzubauen und dann den gesamten Datensatz wie folgt drucken:

echo 1487152859086,,,,,,localhost.localdomain,ServerUpDown,ServerUp,,,,,,, ,,,, | awk 'BEGIN{OFS=FS=","}{$1=strftime("%a %b %d %H:%M:%S %Z %Y", $1)}1' 

Sie erhalten dies:

Fri Dec 13 14:45:52 CSTM 1901,,,,,,localhost.localdomain,ServerUpDown,ServerUp,,,,,,, ,,,, 
+0

Danke für den Tipp! – Hector

Verwandte Themen