Jede Zeile einer Datei mit einem Zeitstempel versehen, der aus der Datei selbst stammt

Jede Zeile einer Datei mit einem Zeitstempel versehen, der aus der Datei selbst stammt

Ich habe eine Datei mit dem folgenden sich wiederholenden Muster:

date
line 1
line 2
...
line x

Beispiel:

10/30/2016 12:10:00
xxx 123
yyy 456
zzz 789

10/30/2016 12:20:00
xxx 234
yyy 567
zzz 890

Wie kann ich jede Zeile mit dem entsprechenden Datum versehen, also:

10/30/2016 12:10:00
10/30/2016 12:10:00 xxx 123
10/30/2016 12:10:00 yyy 456
10/30/2016 12:10:00 zzz 789
10/30/2016 12:20:00
10/30/2016 12:20:00 xxx 234
10/30/2016 12:20:00 yyy 567
10/30/2016 12:20:00 zzz 890

Ich denke, dass es mit AWK möglich sein sollte, aber ich habe nicht viel Erfahrung damit. Vielen Dank im Voraus!

Antwort1

Eine Möglichkeit ist, es so zu machen:

awk '/^[[:digit:]/]+[[:space:]]+[[:digit:]:]+/ {d=$1 " " $2; print; next; } /[^[:space:]]/ { print d " " $0 }'

das mit jeder beliebigen Ziffernfolge übereinstimmt, /gefolgt von einigen Leerzeichen und einer Reihe von Ziffern und :s, die mit unserem Datum übereinstimmen sollten. Wenn wir eines finden, speichern wir die ersten beiden Felder in einer Variablen, ddrucken diese Zeile aus und fahren fort. Wenn wir dann eine Zeile finden, die mindestens ein Zeichen enthält, das kein Leerzeichen ist (da Sie in Ihrem Beispiel die leeren Zeilen zu entfernen scheinen), drucken wir den aktuellen Wert und ddann die aktuelle Zeile aus.

verwandte Informationen