On Mon, Jun 29, 2009 at 05:22:41PM -0300, Alain Mouette wrote:
> Oi Jimmy,
>
> jimmy escreveu:
> > On Mon, Jun 29, 2009 at 04:20:40PM -0300, Alain Mouette wrote:
> >> pesquisei ni Só Sed, mas não encontrei como juntar duas linhas específicas.
> >>
> >> Tenho um arquivo assim:
> >> ---------
> >> Cmp-Mod V01 Genere par PcbNew le Seg 29 Jun 2009 15:38:03 BRT
> >>
> >> BeginCmp
> >> TimeStamp = 49B88542
> >> Path = /49B852A5/49B88542
> >> Reference = U4;
> >> ValeurCmp = MC33063;
> >> IdModule = a_8DIP300;
> >> EndCmp
> >>
> >> BeginCmp
> >> TimeStamp = 49B85EEF
> >> Path = /49B85EEF
> >> Reference = U2;
> >> ValeurCmp = AT24C08A;
> >> IdModule = a_8DIP300;
> >> EndCmp
> >> .....
> >> -----------
> >> com muitos conjuntos semelhantes.
> >> Gostaria que ficasse assim:
> >>
> >> U4,MC33063
> >> U2,AT24C08A
> >>
> >> A minha primeira dificuldade é que não consigo juntar a linha
> >> "Reference" com a linha "ValeurCmp", o que me parece ser o primeiro
> >> passo... O resto eu sei que eu apanharia um pouco mas deveria conseguir :)
> >> ------------------------------------
> >
> > use o "Reference" como endereço e apense com a próxima linha:
> > /^Reference/N;
>
> Infelizmente não funcionou... fazendo vários testes, só descobri que se
> trocar o "N" por "p", a linha fica repetida, então está achando a linha
> corretamente.
>
> > nesse ponto o pattern space ficará algo parecido com:
> > "Reference = U4;\nValeurCmp = MC33063;"
>
> Não deveria ser assim sem o "\n"?
> "Reference = U4;ValeurCmp = MC33063;"
>
> Obrigado mais uma vez...
>
> Alain
>
>
> ------------------------------------
o script que sugeri ficaria apenas:
sed '/^Reference/N;s/[^=]\+=\s\+\([^;]\+\);[^=]\+=\s\+\([^;]\+\);/\1,\2/'
arquivo
testando aqui funciona sem problema.
manda o script e a versão do sed que usa.