¿Cómo puedo convertir marcas de tiempo en una columna en una fecha?

¿Cómo puedo convertir marcas de tiempo en una columna en una fecha?

Tengo un archivo que contiene esto:

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

Quiero convertir la marca de tiempo a una fecha en este formato:

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

¿Cómo puedo hacer eso?

Sé que esto funciona: perl -pe 's/(\d+)/localtime($1)/e'(deesta pregunta) pero el formato de salida es Mon Nov 10 02:00:03 2014.

Sé que este comando puede convertir marcas de tiempo en el resultado deseado: date -d@1415602803 +"%F %H:%M:%S", pero no pude hacerlo funcionar awkdebido system("cmd")a todas las comillas y demás.

Respuesta1

Encontré algo aquí:Stackoverflow: convierte desde Unixtime en la línea de comando.

Se me ocurrió esto:

awk -F"," '{OFS=","; $1=strftime("%Y-%m-%d %H:%M:%S", $1); print $0}' file
  • -F","utilizar un separador de campo de ,,
  • OFS=",";para que los campos de salida también estén separados por un ,,
  • $1=strftime("%Y-%m-%d %H:%M:%S", $1);para cambiar el valor del primer campo $1al formato especificado, y
  • print $0;para imprimir toda la línea.

Respuesta2

Así tal vez

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

Respuesta3

Si lo desea, awkpuede utilizar un comando externo datecon cualquier formato de fecha.

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

Respuesta4

Hice una pregunta hace 9 meses que estaba marcada como un duplicado de esta. Acabo de ver una solicitud para publicar la respuesta que funcionó para mí en esta pregunta. Aquí hay un enlace a esa pregunta y respuesta.

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

información relacionada