合并特定行-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*
谢谢,它工作得很好,我不介意临时文件!没问题。如果它解决了您的问题,请随时联系。谢谢,它工作得很好,我不介意有临时文件!没问题。如果它解决了你的问题,请随时联系。