Substitua o formato do carimbo de data/hora em um arquivo

Substitua o formato do carimbo de data/hora em um arquivo

Eu tenho um arquivo que contém o formato de carimbo de data/hora como abaixo.

'2020-03-07T14:42:36Z UTC [ db=dev user=rdsdb pid=16913 userid=1 xid=5326 ]' LOG: SET statement_timeout TO 120000

Quero alterar esse formato de carimbo de data/hora para

2020-03-07 14:42:36 UTC

neste arquivo.

É um arquivo de log onde não tenho acesso para alterar o formato diretamente e possui bilhões de linhas como esta.

Responder1

sed -e 's/T/ /' -e 's/Z//' file

ou equivalente,

sed 's/T/ /; s/Z//' file

Primeiro, substitua o primeiro Tcaractere em cada linha do arquivo por um espaço e, em seguida, remova a primeira ocorrência de a Z. Isso converteria

'2020-03-07T14:42:36Z UTC [ db=dev user=rdsdb pid=16913 userid=1 xid=5326 ]' LOG: SET statement_timeout TO 120000

em

'2020-03-07 14:42:36 UTC [ db=dev user=rdsdb pid=16913 userid=1 xid=5326 ]' LOG: SET statement_timeout TO 120000

Redirecione para um novo arquivo para salvar os dados. Se você quiser fazer uma edição no local no arquivo, primeiro certifique-se de que as edições parecem ter sido realizadas corretamente (o comando assume que não haverá nem mais nem menos do que exatamente um carimbo de data/hora em cada linha), então você pode usar sed -ipara alterar o arquivo no lugar.

informação relacionada