ファイル自体から取得した日付を使用して、ファイルの各行にタイムスタンプを付けます。

ファイル自体から取得した日付を使用して、ファイルの各行にタイムスタンプを付けます。

次の繰り返しパターンを持つファイルがあります。

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現在の値を印刷します。

関連情報