Semelhante à resposta de @ terdon, mas com sed
:
{ seq -s, 10; seq -s, 5; seq -s, 15; } |
tee - -
Esse é o meu infil - parece:
1,2,3,4,5,6,7,8,9,10
1,2,3,4,5,6,7,8,9,10
1,2,3,4,5,6,7,8,9,10
1,2,3,4,5
1,2,3,4,5
1,2,3,4,5
1,2,3,4,5,6,7,8,9,10,11,12,13,14,15
1,2,3,4,5,6,7,8,9,10,11,12,13,14,15
1,2,3,4,5,6,7,8,9,10,11,12,13,14,15
Eu posso então fazer:
sed 'h;s/[^,]*//g;G;s/\n/ /' | sort -t\ -nk1,1
... que fica ...
,,,, 1,2,3,4,5
,,,, 1,2,3,4,5
,,,, 1,2,3,4,5
,,,,,,,,, 1,2,3,4,5,6,7,8,9,10
,,,,,,,,, 1,2,3,4,5,6,7,8,9,10
,,,,,,,,, 1,2,3,4,5,6,7,8,9,10
,,,,,,,,,,,,,, 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15
,,,,,,,,,,,,,, 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15
,,,,,,,,,,,,,, 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15
Os números não estão lá, mas a contagem é bastante certa, eu acho. Para remover as vírgulas principais que posso fazer:
PIPELINE | sed 's/,* //'
... que fica ...
1,2,3,4,5
1,2,3,4,5
1,2,3,4,5
1,2,3,4,5,6,7,8,9,10
1,2,3,4,5,6,7,8,9,10
1,2,3,4,5,6,7,8,9,10
1,2,3,4,5,6,7,8,9,10,11,12,13,14,15
1,2,3,4,5,6,7,8,9,10,11,12,13,14,15
1,2,3,4,5,6,7,8,9,10,11,12,13,14,15
Talvez não seja a resposta mais auspiciosa até agora, mas a principal razão pela qual decidi escrever isso foi que você mencionou que deseja escrever linhas com 134 entradas separadas por vírgula em outro arquivo. Isso, por acaso, é uma questão simples com sed
. Por exemplo - digamos que eu queria escrever as linhas com 10 campos da seqüência acima para um file2
:
PIPELINE | sed '/^\([^,]*,[^,]*\)\{9\}$/w file2'
cat file2
OUTPUT
1,2,3,4,5,6,7,8,9,10
1,2,3,4,5,6,7,8,9,10
1,2,3,4,5,6,7,8,9,10
Eu uso \{9\}
acima porque ele especifica 9 instâncias do padrão - o que torna 9 delimitadores em 10 campos delimitados. Os intervalos são simplesmente manipulados também:
PIPELINE | sed '/^\([^,]*,[^,]*\)\{4,9\}$/w file2'
cat file2
OUTPUT
1,2,3,4,5
1,2,3,4,5
1,2,3,4,5
1,2,3,4,5,6,7,8,9,10
1,2,3,4,5,6,7,8,9,10
1,2,3,4,5,6,7,8,9,10