Как преобразовать временные метки в столбце в дату?

Как преобразовать временные метки в столбце в дату?

У меня есть файл, содержащий следующее:

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

Я хочу преобразовать временную метку в дату в следующем формате:

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

Как мне это сделать?

Я знаю, что это работает: perl -pe 's/(\d+)/localtime($1)/e'(изэтот вопрос), но выходной формат — Mon Nov 10 02:00:03 2014.

Я знаю, что эта команда может преобразовывать временные метки в желаемый мной вывод: date -d@1415602803 +"%F %H:%M:%S", но я не смог заставить ее работать с awkusing system("cmd")из-за всех этих кавычек и прочего.

решение1

Нашел кое-что здесь:Stackoverflow - Преобразование из unixtime в командной строке.

Придумал вот это:

awk -F"," '{OFS=","; $1=strftime("%Y-%m-%d %H:%M:%S", $1); print $0}' file
  • -F","использовать разделитель полей ,,
  • OFS=",";так что выходные поля также разделены знаком ,,
  • $1=strftime("%Y-%m-%d %H:%M:%S", $1);изменить значение первого поля $1в указанный формат и
  • print $0;для печати всей строки.

решение2

Возможно, вот так

perl -pe 'use POSIX qw(strftime); s/^(\d+)/strftime "%F %H:%M:%S", localtime($1)/e' 

решение3

При желании awkвы можете использовать внешнюю команду dateс любыми форматами дат.

awk -F, -v OFS="," '{("date +%F\ %T -d @"$1)|getline $1}1'

решение4

Я задал вопрос 9 месяцев назад, который был отмечен как дубликат этого. Я только сейчас увидел запрос на публикацию ответа, который сработал для меня на этот вопрос. Вот ссылка на этот вопрос и ответ.

https://unix.stackexchange.com/a/304009/172916

Связанный контент