2016-07-27 64 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