Assim talvez
perl -pe 'use POSIX qw(strftime); s/^(\d+)/strftime "%F %H:%M:%S", localtime($1)/e'
Eu tenho um arquivo contendo isso:
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
Eu quero converter o registro de data e hora em uma data neste 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
Como posso fazer isso?
Eu sei que isso funciona: perl -pe 's/(\d+)/localtime($1)/e'
(de esta pergunta ), mas o formato de saída é Mon Nov 10 02:00:03 2014
.
Eu sei que este comando pode converter timestamps na minha saída desejada: date -d@1415602803 +"%F %H:%M:%S"
, mas não consegui fazê-lo funcionar com awk
usando system("cmd")
por causa de todas as citações e outros exemplos.
Encontrou algo aqui: Stackoverflow - Converta do unixtime na linha de comando .
Caiu com isso:
awk -F"," '{OFS=","; $1=strftime("%Y-%m-%d %H:%M:%S", $1); print $0}' file
-F","
para usar um separador de campo de ,
, OFS=",";
para que os campos de saída também sejam separados por ,
, $1=strftime("%Y-%m-%d %H:%M:%S", $1);
para alterar o valor do primeiro campo $1
no formato especificado e print $0;
para imprimir a linha inteira. Se você gosta de awk
, pode usar o comando externo date
com qualquer formato de data
awk -F, -v OFS="," '{("date +%F\ %T -d @"$1)|getline $1}1'
Você também pode tentar:
cat test.txt | sed 's/^/echo "/; s/\([0-9]\{10\}\)/'date -d @'/; s/$/"/' | bash
Eu fiz uma pergunta 9 meses atrás que foi marcada como uma duplicata desta. Eu só agora vi um pedido para postar a resposta que funcionou para mim nesta questão. Aqui está um link para essa pergunta e resposta.
Tags text-processing perl awk