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, d
drucken 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 d
dann die aktuelle Zeile aus.