convertendo tempo de época de várias linhas em um arquivo de log

0

Estou tentando encontrar uma maneira de converter em lote o registro de data e hora da época de cada linha de um arquivo de log.

Pelo que entendi, devo seguir esse processo.

  1. pesquise no log todas as iterações dos registros de data e hora da época
  2. colocá-los em uma função que os converte em um formato legível por humanos
  3. no lugar, edite-os de volta na saída do arquivo de log normal

Infelizmente, não consigo obter a formatação correta, aqui está um pequeno trecho do arquivo de log:

"[1508371955] Auto-save of retention data completed successfully.",
"[1508375555] Auto-save of retention data completed successfully.",
"[1508379155] Auto-save of retention data completed successfully.",
"[1508382755] Auto-save of retention data completed successfully.",
"[1508386355] Auto-save of retention data completed successfully."
    
por martydelaney3 19.10.2017 / 16:17

1 resposta

0
awk -F"[][]" '{cmd="date -d@" $2;cmd |getline $2; close(cmd)}1' infile

" Thu Oct 19 03:42:35 STD 2017  Auto-save of retention data completed successfully.",
" Thu Oct 19 04:42:35 STD 2017  Auto-save of retention data completed successfully.",
" Thu Oct 19 05:42:35 STD 2017  Auto-save of retention data completed successfully.",
" Thu Oct 19 06:42:35 STD 2017  Auto-save of retention data completed successfully.",
" Thu Oct 19 07:42:35 STD 2017  Auto-save of retention data completed successfully."

Aqui, definimos um comando shell date -d@$2 para uma variável chamada cmd . Então com cmd |getline $2 o awk lê uma linha e passa o segundo valor do campo para o cmd que abrimos, então precisamos fechar o comando que abrimos via pipe, então usamos close(cmd) aqui.

    
por 19.10.2017 / 16:25