次の繰り返しパターンを持つファイルがあります。
date
line 1
line 2
...
line x
例:
10/30/2016 12:10:00
xxx 123
yyy 456
zzz 789
10/30/2016 12:20:00
xxx 234
yyy 567
zzz 890
各行にその日付のタイムスタンプをどのように追加できますか?
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
私はAWKが動作しなければならないと思いますが、私はそれの経験があまりありません。よろしくお願いします!
答え1
1つの可能性は次のとおりです。
awk '/^[[:digit:]/]+[[:space:]]+[[:digit:]:]+/ {d=$1 " " $2; print; next; } /[^[:space:]]/ { print d " " $0 }'
これは、日付と一致する必要がある一連の/
数字と、スペース、一連の数字、およびsが続く一連の数字と一致します。:
1つが見つかったら、最初の2つのフィールドを変数に保存してから、d
この行を印刷して続行します。次に、空白以外の文字が1つ以上含まれている行が見つかるたびに(例から空白行を削除したように見えるため)、現在の行のd
現在の値を印刷します。