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:48:32 -0300

Só no AWK, pra estragar minha solução gambiarrenta:

Créditos "waldner" do #awk @ freenode:

[root@cerebro ~]# cat x
1;2;3;4
5;6;7;8
[root@cerebro ~]# awk -F\;
'{for(i=1;i<=NF;i++)a[NR,i]=$i}END{for(i=1;i<=NF;i++){line=s="";for(j=1;j<=NR;j++){line=line
s a[j,i];s=";"};print line}}' x
1;5
2;6
3;7
4;8
[root@cerebro ~]#

--

Flávio do Carmo Júnior aka waKKu

2009/5/25 Flavio Junior <address@hidden>

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