使用从文件本身获取的日期对文件的每一行添加时间戳

使用从文件本身获取的日期对文件的每一行添加时间戳

我有一个具有以下重复模式的文件:

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当前行中打印当前值。

相关内容