2017-02-21 42 views
0

Я triyng отформатировать первый столбец CSV, который является временной меткой Unix в миллисекундах формата, как эта команда:Как я могу отформатировать столбец timestamp в CSV-файле?

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

где $ line_date что-то вроде 1487693882310

И мой файл имеет эта информация:

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

Я хотел бы, чтобы это было так:

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,,,,,,, ,,,, 

Я попытался это, но он не работает:

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

Любая помощь будет много apreciated.

Большое спасибо в продвинутом виде.

С уважением.

Эктор

ответ

0

Один из способов заключаются покинуть строку CSV нетронутой и предварять его с разобранной меткой времени в качестве первого столбца.

Что-то вроде:

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

Выходы:

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

Вот и все! Большой! Благодаря! – Hector

-1

Или вы можете восстановить первое поле, а затем распечатать всю запись так:

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

Вы получите это:

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

Спасибо за подсказку! – Hector