[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [shell-script] Sed - Concaternar linhas alternadas
From: |
Tiago Barcellos Peczenyj |
Subject: |
Re: [shell-script] Sed - Concaternar linhas alternadas |
Date: |
Wed, 30 Apr 2008 11:15:13 -0300 |
Salviano, veja esta dica [ http://aurelio.net/sed/1liners-ptBR.txt ]
# une pares de linhas lado a lado (como o "paste")
sed 'N;s/\n/ /'
Exemplo
$ sed 'N;s/\n/ /' arquivo
-1.0000 3.914026 0.0000 7.471841
-0.9000 3.285307 0.0000 8.272979
-0.8000 2.110399 0.0000 9.964568
-0.7000 0.922031 0.0000 12.012098
-0.6000 -0.153824 4.0433 14.285975
2008/4/30 Salviano de Araujo Leão <address@hidden>:
>
>
>
>
>
>
> Ao rodar um programa com saída não formatada ele
> gerou um arquivo de dados que deveria ter quatro
> colunas, entretanto ele foi gerado da seguinte forma:
>
> -1.0000 3.914026 0.0000
> 7.471841
> -0.9000 3.285307 0.0000
> 8.272979
> -0.8000 2.110399 0.0000
> 9.964568
> -0.7000 0.922031 0.0000
> 12.012098
> -0.6000 -0.153824 4.0433
> 14.285975
>
> Este arquivo deveria ter a seguinte forma:
> -1.0000 3.914026 0.0000 7.471841
> -0.9000 3.285307 0.0000 8.272979
> -0.8000 2.110399 0.0000 9.964568
> -0.7000 0.922031 0.0000 12.012098
> -0.6000 -0.153824 4.0433 14.285975
>
> Bom meus conhecimentos de sed são bem limitados,
> mas resolvi o problema com o seguinte script:
>
> #!/bin/sh
> arq="$1".dat
> cat $arq | sed -n "1~2p" > /tmp/impar_$$
> cat $arq | sed -n "2~2p" > /tmp/par_$$
> mv $arq ${arq}.old
> paste /tmp/impar_$$ /tmp/par_$$ > ${arq}
> rm -f /tmp/impar_$$ /tmp/par_$$
>
> Entretanto acho que seria possível fazer o mesmo
> somente com o sed em uma linha. Se alguém
> conhecer uma solução eu agradeço.
>
> Obreigado
>
> Salviano
>
>
--
Tiago B Peczenyj
Linux User #405772
http://peczenyj.blogspot.com/
"what does not kill us makes us stronger"