Fiz uma melhoria naquela ideia anterior... Da uma olhada, qualquer duvida pergunta ai:
[r...@cerebro ~]# cat x 1;2;3;4 5;6;7;8 [r...@cerebro ~]# JMP=$(awk '{print $1/2}' <(tr ";" "\n" <x | wc -l)) [r...@cerebro ~]# for ((i=1;i<=$JMP;i++)); do sed -n "${i}~${JMP}p" x2; done | paste -d';' - - 1;5 2;6 3;7 4;8 [r...@cerebro ~]# Essa é pra qualquer tamanho de arquivo, mas vai executar NR/2 sed's. Sendo NR o numero de linhas. -- Flávio do Carmo Júnior aka waKKu 2009/5/25 jimmy <ronaldo_...@yahoo.com.br> > > > On Mon, May 25, 2009 at 09:26:22AM -0300, Pedro Bazzarella da Silva wrote: > > Amigos, > > > > Estou com uma dúvida: > > > > Tenho um arquivo com o seguinte layout: > > 1;2;3;4 > > 5;6;7;8 > > > > Eu gostaria de transformar o mesmo neste novo layout: > > 1;5 > > 2;6 > > 3;7 > > 4;8 > > > > A idéia é trocar linha por coluna. > > > > Existe algum comando no unix que faça isso direto? > > > > Abs, > > > > Pedro Bazzarella > > ------------------------------------ > > se o seu arquivo for "pequeno" para o seu hardware, você pode tentar > usar esse 1liner: > > awk -F\; > '{for(i=1;i<=NF;i++){a[i,NR]=$i;}}END{for(i=1;i<=NF;i++){for(j=1;j<=NR;j++){ORS=(j==NR)?"\n":FS;print > a[i,j];};}}' arquivo > > ele vai armazenar cada caractere em um array de 2 dimensões onde a > posições e o número da linha formam o índice; ao final do processamento > do arquivo, ele imprime o conteúdo do array. > > -- > "Não manejo bem as palavras > Mas manipulo bem as strings." > ------------------------------ > > [As partes desta mensagem que não continham texto foram removidas]