shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] Sed :: Não substituir entre dois intervalos.


From: Alysson Gonçalves de Azevedo
Subject: Re: [shell-script] Sed :: Não substituir entre dois intervalos.
Date: Sun, 14 Jul 2013 00:10:09 -0300

Para fazer o que vc quer:
sed '/#f1#/,/#ff1#/d' 01

Tem mais exemplos e explicações aqui:
https://www.google.com.br/search?q=shell+sed+match++between+2+values

Alysson Gonçalves de Azevedo

"Anarcho-syndicalism is a way of preserving freedom." - Monty Python


Em 13 de julho de 2013 16:34, Rodrigo Boechat <
address@hidden> escreveu:

> **
>
>
> Alfredo, obrigado pela resposta!
>
> Eu estive lendo.
> Aliás muito bom o material disposto ali.
>
> Infelizmente não consegui ainda fazer funcionar.
> Imaginando que eu terei que usar controle de fluxo e marcadores,
> comecei testes baseado neste aqui:
>
> 3.16. Extrair trecho que pode ou não estar na mesma linha
> sed -n '/segundo/{:a;/quarto/!{N;ba;};p;}'
>
> Se eu entendi bem o exemplo acima funciona assim:
> /segundo/ = Procura por segundo;
> { = Abre bloco de comandos;
> :a; = cria um marcador chamado "a";
> /quarto/ = procura por quarto;
> ! = nega a procura anterior;
> { = abre um segundo bloco de comandos;
> N; = junta com a próxima linha;
> ba; = volta a execução para o marcador "a";
> }; = fecha o segundo bloco de comandos;
> p; = imprime caso encontre "quarto";
> } = fecha o primeiro bloco de comandos.
>
> Mas tudo que eu fiz nada funcionou.
> Desconfio que não compreendi a lógica de funcionamento ainda.
>
> Se você souber, pode me ensinar?
>
> Grato!
>
> Em Sáb 13 Jul 2013 09:44:52 BRT, Alfredo Casanova escreveu:
>
> > De cabeça n consigo resolver, mas tem boas referências do sed aqui:
> >
> > http://thobias.org/doc/sosed.html
> >
> > Que podem te ajudar
> > Em 13/07/2013 06:32, "Rodrigo Boechat" <
> address@hidden>
> > escreveu:
> >
> >> **
> >>
> >>
> >> Pessoal, bom dia!
> >>
> >> Como eu faria para não aplicar substituições entre dois intervalos?
> >>
> >> Exemplo:
> >>
> >> cat >01<<EOF
> >> qwerty
> >> qwerty
> >> #f1#qwerty
> >> qwerty#ff1#
> >> qwerty
> >> #f2#qwerty#ff2#
> >> qwerty
> >> qwerty
> >> qwerty
> >> EOF
> >>
> >> Tentando da forma que descrevo abaixo, obtive o seguinte erro:
> >> sed: -e expressão #1, caractere 29: comando desconhecido: `|'
> >>
> >> sed '
> >> /^\#f1\#/,/^\#ff1\#/ | /^\#f2\#/,/^\#ff2\#/ ! {
> >> s/qwerty/TESTE/g
> >> }' 01
> >>
> >> Andei pesquisando na net e ainda não achei algo parecido.
> >> Preciso encontrar um intervalo, #f1# e#ff1#, ou o outro, #f2# e #ff2#,
> >> para não executar o s/qwerty/TESTE/g, dentro deles.
> >>
> >> Alguém sabe como me ajudar?
> >>
> >> Desde jáagradeço!
> >>
> >> Rodrigo Boechat
> >>
> >> [As partes desta mensagem que não continham texto foram removidas]
> >>
> >>
> >>
> >
> >
> > [As partes desta mensagem que não continham texto foram removidas]
> >
> >
> >
> > ------------------------------------
> >
> > ----------------------------------------------------------
> > Esta lista não admite a abordagem de outras liguagens de programação,
> como perl, C etc. Quem insistir em não seguir esta regra será moderado sem
> prévio aviso.
> > ----------------------------------------------------------
> > Sair da lista: address@hidden
>
> > ----------------------------------------------------------
> > Esta lista é moderada de acordo com o previsto em
> http://www.listas-discussao.cjb.net
> > ----------------------------------------------------------
> > Servidor Newsgroup da lista: news.gmane.org
> > Grupo: gmane.org.user-groups.programming.shell.brazil
> >
> > Links do Yahoo! Grupos
> >
> >
> >
>
>  
>


[As partes desta mensagem que não continham texto foram removidas]



reply via email to

[Prev in Thread] Current Thread [Next in Thread]