[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [shell-script] Sed - Concaternar linhas alternadas
From: |
Salviano de Araujo Leão |
Subject: |
Re: [shell-script] Sed - Concaternar linhas alternadas |
Date: |
Wed, 30 Apr 2008 12:16:54 -0300 |
User-agent: |
KMail/1.9.9 |
Em Wednesday 30 April 2008 11:15:13 Tiago Barcellos Peczenyj escreveu:
Valeu Tiago,
Eu tinha feito uma busca no sed1liners, mas passou
desabercebido.
Obrigado
Salviano
> 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