Estou tentando obter a data de alguns logs em um determinado formato para fazer algumas comparações posteriormente. Aqui está meu comando:
fgrep "<expression>" <logFile> | sort | awk -F "[][]" 'messageDate=$(date -d "$2" "+%Y.%j.%H.%M.%S") { print messageDate }'
O que me é impresso são as linhas completas dos arquivos de log.
Se em vez disso eu executar isto:
fgrep "<expression>" <logFiles> | sort | awk -F "[][]" 'messageDate=$(date -d "$2" "+%Y.%j.%H.%M.%S") { print $2 }'
Recebo as datas, mas não no formato que desejo.
2014-09-04T08:22:16Z
2017-10-08T16:05:06Z
2022-11-30T14:50:16Z
Os arquivos de log têm mensagens como esta:
[2022-11-30T14:50:16Z] <Info/Warning/Error>: <log message>
Alguém entende por que o awk está funcionando, ou seja, ele está dividindo o arquivo corretamente, mas o código messageDate=$(date -d "$2" "+%Y.%j.%H.%M.%S")
está de alguma forma recebendo a mensagem de log completa novamente?