我有一个文件,如果第二列的数字为 2,我想连接接下来的 5 行,例如:
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
输出应该是:
67 2 a b c a b 0.1 0.2 0.3 0.4 0.3 0.9 0.7 0.1
78 2 p o p q d 1.0 0.9 0.8 0.7 0.4 0.3 0.2 0.1
awk解决方案:连接 5 行(包括模式线),每行遇到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
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句