如何可以在固定尺寸的几个柱拆分单个列的几个柱拆分柱,例如我有一个这样的柱:在bash哪能在固定尺寸
1
2
3
4
5
6
7
8
和尺寸页。 ex 4,我想获得
1 5
2 6
3 7
4 8
或对于大小p。 ex 2,我想获得
1 3 5 7
2 4 6 8
如何可以在固定尺寸的几个柱拆分单个列的几个柱拆分柱,例如我有一个这样的柱:在bash哪能在固定尺寸
1
2
3
4
5
6
7
8
和尺寸页。 ex 4,我想获得
1 5
2 6
3 7
4 8
或对于大小p。 ex 2,我想获得
1 3 5 7
2 4 6 8
用awk:
awk '
BEGIN {
# Numbers of rows to print
n=4;
}
{
# Add to array with key = 0, 1, 2, 3, 0, 1, 2, ..
l[(NR-1)%n] = l[(NR-1)%n] " " $0
};
END {
# print the array
for (i = 0; i < length(l); i++) {
print l[i];
}
}
' file
号码的列非常感谢,它的作品 – famedoro
OK,这是一个有点长篇大论,而不是犯错,但下面应该工作:
td=$(mktemp -d); split -l <rows> <file> ${td}/x ; paste $(ls -1t ${td}/x*) ; rm -rf ${td}; unset td
哪里<cols>
是你想要的行数和file
是你的输入文件。 说明:
td=$(mktemp -d)
创建一个临时目录,这样我们就可以把临时文件进去。将其存储在td
中 - 有可能您的shell已经有td
变量,但是如果您为此设置了子shell,那么您的范围应该没问题。
split -l <rows> <file> f ${td}/x
将原始文件拆分成许多较小的文件,每个文件长<rows>
。这些将投入temp目录下的所有文件将与x
paste $(ls -1t ${td}/x*)
前缀将这些文件写入出来,这样在连续列
rm -rf ${td}
行删除的文件和目录。
unset td
清洁环境。
假设你知道在你列的行数(这里是8):
n=8
# to get output with 4 rows:
seq $n | pr -ts" " -$((n/4))
1 5
2 6
3 7
4 8
# to get output with 2 rows:
seq $n | pr -ts" " -$((n/2))
1 3 5 7
2 4 6 8
那你试试? –
@Thomas @Thomas我曾尝试公关,没有成功折叠 – famedoro