Eu não sei o que você está delimitando essas colunas, mas eu fiz um arquivo como:
i=0
until [ "$((i+=1))" -gt 100 ]
do seq -s ' ' 10671
done >/tmp/file
Que resultou em 100 linhas em 10671 colunas, uma peça delimitada em sequências de espaços.
Eu fiz em seguida:
sed 's/ */\n/1000;/\n/P;//D;G' </tmp/file | sed 's/.* //'
Eu usei o segundo sed
porque eu queria ver claramente onde os dados se dividiam - pode ser um pouco difícil fazer sentido em mil colunas em uma única linha. Então elidei cada linha à sua coluna final. Toda vez que eu uso s/.* //
aqui é porque eu quero mostrar apenas a coluna final para uma linha. Por exemplo, quando eu corri isso imprimiu ...
1000
2000
3000
4000
5000
6000
7000
8000
9000
10000
10671
... 100 vezes. E isso significa que cada linha realmente parece ...
1 2 3...1000
1001 1002 1003...2000
... e assim por diante. sed
estava definitivamente dividindo os dados corretamente ...
Então eu achei que seria realmente fácil dividir isso em arquivos separados por linha. Então, meu próximo passo foi:
sed 's/ */\n/1000;/\n/P;//D;G' </tmp/file |
sed -n "$(printf 'w /tmp/outfile.%d\nn\n' {1..11})"
... e acabei com 11 arquivos em /tmp
em que todas as colunas foram divididas separadamente. Eu posso fazer ...
sed 's/.* //' /tmp/outfile.1
... e será impresso como ...
1000
1000
1000
1000
... 25 vezes. ou ...
sed 's/.* //' /tmp/outfile.11
... e ...
10671
10671
10671
10671
... também 25 vezes ...