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 T
caractere 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 -i
para alterar o arquivo no lugar.