合并特定行-awk/sed

合并特定行-awk/sed,awk,sed,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 #1

我有一个有几千个数字的文本文件,排列如下:

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...
我要做的是将我的文件格式化为如下所示:

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矩阵中排列我的数字(因此,在第一个111行之后,第112行将与第一行合并,第113行与第二行合并,等等,每111行合并一次)。有没有办法用awk/sed做到这一点


任何帮助都将不胜感激

试试这个,未经测试,因为您没有提供可测试的样本输入/输出:

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

上述方法将GNU awk用于多字符RS,并且
\s

尝试此未经测试的方法,因为您没有提供可测试的样本输入/输出:

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

上述方法将GNU awk用于多字符RS和
\s

如果您可以使用临时文件,则可以使用
拆分
,然后使用
粘贴
split
将文件拆分为较小的文件,每个文件的
n
行,然后
paste
获取输入文件并垂直连接它们

为临时文件选择任意前缀
tmp

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

如果您可以使用临时文件,可以使用
split
然后
paste
split
将文件拆分为较小的文件,每个文件的
n
行,然后
paste
获取输入文件并垂直连接它们

为临时文件选择任意前缀
tmp

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

谢谢,它工作得很好,我不介意临时文件!没问题。如果它解决了您的问题,请随时联系。谢谢,它工作得很好,我不介意有临时文件!没问题。如果它解决了你的问题,请随时联系。