【发布时间】:2015-11-05 07:38:33
【问题描述】:
我想处理一个多行、多字段的输入文件,以便我得到一个包含所有连续行对的文件,前提是它们与字段 #1 具有相同的值。
也就是说,对于每一行,输出将包含该行本身 + 下一行,并且会省略字段 #1 中具有不同值的行组合。
最好用一个例子来解释。
鉴于此输入:
1 this
1 that
1 nye
2 more
2 sit
我想制作类似的东西:
1 this 1 that
1 that 1 nye
2 more 2 sit
到目前为止,我得到了这个:
awk 'NR % 2 == 1 { i=$0 ; next } { print i,$0 } END { if ( NR % 2 == 1 ) { print i } }' input.txt
我的输出:
1 this 1 that
1 nye 2 more
2 sit
如您所见,我的代码对字段 #1 的值视而不见,而且(更重要的是)它省略了像 1 that 1 nye 这样的“中间”结果(一旦用一行完成,它就会跳转到下一对行)。
有什么想法吗?我的首选语言是 awk/gawk,但如果可以使用 unix bash 完成,也可以。
提前致谢!
【问题讨论】: