Entrar
Usuário novo? Cadastre-se
sed-br · Lista sobre SED e Expressões Regulares
? Você já é um associado? Entre no Yahoo!

Dicas

Você sabia...
Você pode ordenar suas mensagens por data? Basta clicar no link da coluna data. Suas preferências serão lembradas para que você não precise fazer isso novamente sempre que retornar.

Mensagens

  Ajuda
Avançado
Juntar duas linhas   Lista de mensagens  
Responder | Encaminhar Mensagem #4225 de 4300 |
Re: [sed-br] Juntar duas linhas

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.



Seg, 29 de Jun de 2009 9:10 pm

ronaldo_tgz
Offline Offline
Enviar e-mail Enviar e-mail

Encaminhar Mensagem #4225 de 4300 |
Expandir mensagens Nome/E-mail Classificar por data

pesquisei ni Só Sed, mas não encontrei como juntar duas linhas específicas. ... Cmp-Mod V01 Genere par PcbNew le Seg 29 Jun 2009 15:38:03 BRT BeginCmp ...
Alain Mouette
alainm3
Offline Enviar e-mail
29 de Jun de 2009
7:17 pm

... use o "Reference" como endereço e apense com a próxima linha: /^Reference/N; nesse ponto o pattern space ficará algo parecido com: "Reference =...
jimmy
ronaldo_tgz
Offline Enviar e-mail
29 de Jun de 2009
7:41 pm

Oi Jimmy, ... 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...
Alain Mouette
alainm3
Offline Enviar e-mail
29 de Jun de 2009
8:19 pm

... o script que sugeri ficaria apenas: sed '/^Reference/N;s/[^=]\+=\s\+\([^;]\+\);[^=]\+=\s\+\([^;]\+\);/\1,\2/' arquivo testando aqui funciona sem problema. ...
jimmy
ronaldo_tgz
Offline Enviar e-mail
29 de Jun de 2009
9:11 pm

... Entendi o problema, eu estava fazendo uma parte e depois a outra, ou seja dois comandos sed separados. Sobrou alguma coisa... as outras linhas aparecem na...
Alain Mouette
alainm3
Offline Enviar e-mail
29 de Jun de 2009
9:41 pm

... você pode usar o parâmetro "-n" no sed e colocar um "p" no final do comando: sed -n...
jimmy
ronaldo_tgz
Offline Enviar e-mail
30 de Jun de 2009
12:25 pm

Oi Jimmy, estou aproveitando para aprender :) ... Ok, este eu entendi :) - "-n" é para não imprimir, e o "p" imprime as linhas que interessam... ... Este eu...
Alain Mouette
alainm3
Offline Enviar e-mail
30 de Jun de 2009
9:34 pm

... era isso mesmo. ... ela é usada como endereço (info sed Addresses) para os comandos "!d", aproveitando para definir as backreferences "\1" e "\2" (info...
jimmy
ronaldo_tgz
Offline Enviar e-mail
1 de Jul de 2009
12:50 pm
Avançado

Copyright © 2009 Yahoo! do Brasil Internet Ltda. Todos os direitos reservados.
Política de Privacidade - Termos do Serviço - Diretrizes - Ajuda