2016-07-27 67 views
0

我有安排這樣的幾千號的文本文件:合併的具體線 - awk的/ sed的

line 1: #0 #1 #2 #3 #4 #5 
line 2: #6 #7 #8 #9 #10 #11 
... 
line 111: #106 #107 #108 #109 #110 
line 112: #111 #112 #113 #114 #115 
... 

我想要做的就是格式化我的文件看起來像這樣:

line 1: #0 #1 #2 #3 #4 #5 #111 #112 #113 #114 #115 ... 
line 2: #6 #7 #8 #9 #10 #11 #116 #117 #118 #119 #120 #121 ... 
... 
line 111: #106 #107 #108 #109 #110 #218 #219 #220 #221 #222 #223... 

基本上我想把我的數字排列在一個111x111的矩陣中(所以在保留第112行的前111行將與第一行合併,第113行與第二行合併,這將發生在每111行) 。有沒有辦法用awk/sed來做這件事?

任何幫助,將不勝感激!

回答

1

如果您有臨時文件,您可以使用split,然後pastesplit將文件分割爲每個n行的較小文件,並且paste將輸入文件和垂直連接起來。

選擇任意前綴tmp我們的臨時文件:

split -l 111 input.txt tmp 
paste tmp* >output.txt 
rm tmp* 
+0

謝謝你,它完美的作品,我不介意的臨時文件! – JavaNewb

+0

沒問題。如果它解決了您的問題,請隨時[接受](http://stackoverflow.com/help/accepted-answer)。 – leekaiinthesky

1

嘗試此,未測試因爲你沒有提供可測試的樣品的輸入/輸出:

awk -v RS='\\s' '{ORS=(NR%111?"\n":OFS)}1' file 

上面使用GNU AWK多炭RS和\s