Ersetzen des Zeitstempelformats in einer Datei

Ersetzen des Zeitstempelformats in einer Datei

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 TZeichen 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 -idie Datei möglicherweise direkt ändern.

verwandte Informationen