单程awk。我不知道它是否(awk
)可以处理如此大量的列,但请试一试。它使用模数运算符为每个特定数量的列削减行。
awk '{
## Print header of first line.
printf "%s%s%s%s", $1, FS, $2, FS
## Count number of columns printed, from 0 to 100.
count = 0
## Traverse every columns but the first two keys.
for (i = 3; i <= NF; i++) {
## Print header again when counted 100 columns.
if (count != 0 && count % 100 == 0) {
printf "%s%s%s%s%s", ORS, $1, FS, $2, FS
}
## Print current column and count it.
printf "%s%s", $i, FS
++count
}
## Separator between splits.
print ORS
}
' infile
我两条线和4
列,而不是100
进行了测试。下面是测试文件:
key1 key2 one two three four five six seven eight nine ten
key1 key2 one2 two2 three2 four2 five2 six2 seven2 eight2 nine2 ten2
在
和结果:
key1 key2 one two three four
key1 key2 five six seven eight
key1 key2 nine ten
key1 key2 one2 two2 three2 four2
key1 key2 five2 six2 seven2 eight2
key1 key2 nine2 ten2
什么软件在其右侧的脑海里输出1.5M列(你平均值m为百万或M在罗马数字?为1000?)(无论哪种方式它的疯狂,只是不同的数量级;-))。难道你不能通过另一种方式获得数据:50列,150M行吗?祝你好运! – shellter