Reemplazar el formato de marca de tiempo en un archivo

Reemplazar el formato de marca de tiempo en un archivo

Tengo un archivo que contiene el formato de marca de tiempo como se muestra a continuación.

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

Quiero cambiar este formato de marca de tiempo a

2020-03-07 14:42:36 UTC

en este archivo.

Es un archivo de registro al que no tengo acceso para cambiar el formato directamente y tiene miles de millones de líneas como esta.

Respuesta1

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

o equivalente,

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

Esto primero reemplaza el primer Tcarácter en cada línea del archivo con un espacio y luego elimina la primera aparición de un archivo Z. Esto convertiría

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

en

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

Redirigir a un nuevo archivo para guardar los datos. Si desea realizar una edición in situ en el archivo, primero asegúrese de que las ediciones parezcan realizarse correctamente (el comando supone que no habrá ni más ni menos que exactamente una marca de tiempo en cada línea), luego posiblemente utilice sed -ipara cambiar el archivo en su lugar.

información relacionada