2017-05-27 101 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 
相關問題