
Ich habe eine Datei, die das folgende Zeitstempelformat enthält.
'2020-03-07T14:42:36Z UTC [ db=dev user=rdsdb pid=16913 userid=1 xid=5326 ]' LOG: SET statement_timeout TO 120000
Ich möchte dieses Zeitstempelformat ändern in
2020-03-07 14:42:36 UTC
in dieser Datei.
Es handelt sich um eine Protokolldatei, bei der ich keinen Zugriff habe, um das Format direkt zu ändern, und sie enthält Milliarden von Zeilen wie diese.
Antwort1
sed -e 's/T/ /' -e 's/Z//' file
oder gleichwertig,
sed 's/T/ /; s/Z//' file
Dies ersetzt zuerst das erste T
Zeichen in jeder Zeile der Datei durch ein Leerzeichen und entfernt dann das erste Vorkommen von Z
. Dies würde umwandeln
'2020-03-07T14:42:36Z UTC [ db=dev user=rdsdb pid=16913 userid=1 xid=5326 ]' LOG: SET statement_timeout TO 120000
hinein
'2020-03-07 14:42:36 UTC [ db=dev user=rdsdb pid=16913 userid=1 xid=5326 ]' LOG: SET statement_timeout TO 120000
Leiten Sie zu einer neuen Datei um, um die Daten zu speichern. Wenn Sie die Datei direkt bearbeiten möchten, stellen Sie zunächst sicher, dass die Änderungen korrekt ausgeführt wurden (der Befehl geht davon aus, dass in jeder Zeile nicht mehr und nicht weniger als genau ein solcher Zeitstempel vorhanden ist). Anschließend können Sie sed -i
die Datei möglicherweise direkt ändern.