2017-05-27 46 views
-1

我有一个文件,如果所述第二列具有数2,我要连接的下一个5条线,例如:如果列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 
+0

前的'67'技术上把'67'到山坳2.这是你想要什么空间?还是领先的空间被忽略? –

+0

不,我不打算放这个空间,这只是一个错误 –

+0

'1 2 3 4'在第二列有一个'2',那么为什么它后面没有5行呢?什么**正确**是您何时连接线条的实际标准? –

回答

0

AWK解决方案:连接5行(包括模式行)在每个遇到行第012栏中的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 
相关问题