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 receber várias mensagens em um único e-mail. Basta configurar suas opções de entrega de e-mail.

Mensagens

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

On Tue, Jun 30, 2009 at 06:37:26PM -0300, Alain Mouette wrote:
> Oi Jimmy, estou aproveitando para aprender :)
>
> jimmy escreveu:
> >> mas deve ter como só imprimir as linhas que foram editadas, certo?
> > você pode usar o parâmetro "-n" no sed e colocar um "p" no final do
> > comando:
> >
> > sed -n
'/^Reference/N;s/[^=]\+=\s\+\([^;]\+\);[^=]\+=\s\+\([^;]\+\);/\1,\2/p' arquivo
>
> Ok, este eu entendi :) - "-n" é para não imprimir, e o "p" imprime as
> linhas que interessam...
>
> > ou usar um "!d" para apagar todas as outras linhas:
> >
> > sed
'/^Reference/N;/[^=]\+=\s\+\([^;]\+\);[^=]\+=\s\+\([^;]\+\);/!d;s//\1,\2/'
arquivo
>
> Este eu não entendi... o que é a "!" ??
> e também não está fazendo na sequencia normal (vou resumir porque está
> confuso):
> 1) Seleciona a linha co Referencia e acrescenta a próxima linha. fica
> com "\n" e tudo no buffer. Acho que essa eu entendi.
era isso mesmo.

> 2) tem uma expressão regular que parece que não faz nada nas define as
> variáveis 1 e 2. É isso?
ela é usada como endereço (info sed Addresses) para os comandos "!d",
aproveitando para definir as backreferences "\1" e "\2" (info sed
'Extended regexps'), para usarmos mais adiante

> 3) deleta, mas com o "!" que não entendi o que faz
o "!" diz ao comando "d" para _não_ apagar aquele pattern space, e pela
forma como o usamos só vai sobrar aquele pattern space.

> 4) como o buffer ficou vazio, substitui o nada pelo que eu quero usando
> as variáveis da expressão anterior. Não entendi porque elas não foram
> apagadas...
o pattern space não ficou vazio, nesse ponto o comando "d" apagou
tudo, _exceto_ as linhas que nos interessam; sendo assim o
comando de substituição que termina o script faz o seu trabalho
usando como referência a última regexp em que houve match, incluindo
as backreferences definidas nela.


> Me dê uma luz...
>
> Abraços,
> Alain
> ------------------------------------


--
"Não manejo bem as palavras
Mas manipulo bem as strings."
------------------------------



Qua, 1 de Jul de 2009 12:49 pm

ronaldo_tgz
Offline Offline
Enviar e-mail Enviar e-mail

Encaminhar Mensagem #4229 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