shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] Transformar linha em coluna.


From: Flavio Junior
Subject: Re: [shell-script] Transformar linha em coluna.
Date: Mon, 25 May 2009 15:40:58 -0300

Fiz uma melhoria naquela ideia anterior...

Da uma olhada, qualquer duvida pergunta ai:

[root@cerebro ~]# cat x
1;2;3;4
5;6;7;8
[root@cerebro ~]# JMP=$(awk '{print $1/2}' <(tr ";" "\n" <x | wc -l))
[root@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
[root@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 <address@hidden>

>
>
> 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]



reply via email to

[Prev in Thread] Current Thread [Next in Thread]