Alterar formato de hora no arquivo de log

-2

Eu tenho o arquivo de log do squid no seguinte formato:

31/Jul/2014:13:44:52 +0400.701      0 172.16.204.59 TCP_DENIED/407 5232 GET http://vec01.maps.yandex.net/tiles? - NONE/- text/html

mas o analisador de log precisa de tempo no formato unix.

O comando

date pode ser convertido em formato unix:

date -d "31 Jul 2014 12:51:57 +0400" '+%s'
1406796717

mas não consigo compor o comando sed para o formato de alteração. Por favor me ajude.

    
por Бай Хрэй 04.09.2014 / 12:41

1 resposta

0

Você pode usar o seguinte comando perl para substituir todas as datas nos registros existentes:

cat my_squid.log | perl -ne '/(^.*? \+.*?)\..*?\s/; $a = $b = $1;$a= "\Q$a"; $b=~s/\// /g; $b=~s/(\d{4}):/$1 /; $b='date --date=\"$b\" +%s'; chomp($b); s/$a/${b}/; print'

A saída é agora:

1406799892.701      0 172.16.204.59 TCP_DENIED/407 5232 GET http://vec01.maps.yandex.net/tiles? - NONE/- text/html
    
por Sylvain Pineau 04.09.2014 / 14:32