use*_*305 4 grep sed awk text-processing
我有一个文件,其内容如下所示:
2009 150 0 0 0 0000
75.316 0.0400390625 0.00007 0.00000 0.8980
76.216 0.0400390625 0.00007 1.00000 0.9046
77.217 0.0400390625 0.00009 2.00000 0.9113
78.341 0.0400390625 0.00010 3.00000 0.9183
2009 150 2 0 0 0000
75.316 0.0400390625 0.00007 0.00000 0.8980
76.216 0.0400390625 0.00007 1.00000 0.9046
77.217 0.0400390625 0.00009 2.00000 0.9113
78.341 0.0400390625 0.00010 3.00000 0.9183
79.616 0.0400390625 0.00013 4.00000 0.9255
Run Code Online (Sandbox Code Playgroud)
我想要:
本质上,我正在寻找这样的输出:
2009 150 0 0 0 0000 75.316 0.0400390625 0.00007 0.00000 0.8980
2009 150 0 0 0 0000 76.216 0.0400390625 0.00007 1.00000 0.9046
2009 150 0 0 0 0000 77.217 0.0400390625 0.00009 2.00000 0.9113
2009 150 0 0 0 0000 78.341 0.0400390625 0.00010 3.00000 0.9183
2009 150 2 0 0 0000 75.316 0.0400390625 0.00007 0.00000 0.8980
2009 150 2 0 0 0000 76.216 0.0400390625 0.00007 1.00000 0.9046
Run Code Online (Sandbox Code Playgroud)
......
我已经在这个问题上摸索了很长一段时间,无法提出解决方案。帮助将不胜感激。我知道如何使用标志提取关键字之间的文本,但我不确定这是否是正确的方向。
您可以awk
为此使用:
awk '/^2009/{a=$0;next}{print a" "$0} ' file.txt
Run Code Online (Sandbox Code Playgroud)
这只会在 2009 年第一场比赛之前的任何行前添加一个空格,您可以设置一个默认字符串以这样添加:
awk 'BEGIN{a="My default prepend string";}/^2009/{a=$0;next}{print a" "$0} ' file.txt
Run Code Online (Sandbox Code Playgroud)