如果第2列等于某个值,如何连接每5行?

时间:2017-05-27 02:33:25

标签: linux unix awk sed

我有一个文件,如果第二列的编号为2,我想连接接下来的5行,例如:

show

输出应为:

67 2
a b c 
a b
0.1 0.2 0.3 0.4
0.3 0.9 0.7 0.1
09 3
b v c
5 6 7 8
78 2
p o p
q d
1.0 0.9 0.8 0.7
0.4 0.3 0.2 0.1

1 个答案:

答案 0 :(得分:0)

awk 解决方案:连接第5行(包括 pattern 行),遇到第2行2的行列(连接的行除外):

awk '$2==2{i=4;tail=$0; while (i-- && (getline nl) > 0) { tail=tail FS nl } print tail}' file

输出:

67 2 a b c a b 1 2 3 4 0 9 7 1
78 2 p o p q d 0 9 8 7 4 3 2 1