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 T
cará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 -i
para cambiar el archivo en su lugar.