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]

Responder a