使用從文件本身獲取的日期對文件的每一行添加時間戳

使用從文件本身獲取的日期對文件的每一行添加時間戳

我有一個具有以下重複模式的檔案:

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

一種可能性是這樣做:

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

它將匹配任何數字序列,/後面跟著一些空格,然後是一系列數字和:s,這應該與我們的日期匹配。如果找到一個,我們將前兩個欄位保存在變數 中,d然後列印此行並繼續。然後,每當我們發現一行至少有一個非空格字元時(因為您似乎在範例中刪除了空白行),我們就會在d目前行中列印目前值。

相關內容