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

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

Re: [shell-script] Re: Substituição com expressão regular


From: Mauro Baraldi
Subject: Re: [shell-script] Re: Substituição com expressão regular
Date: Tue, 13 Jul 2010 22:09:09 -0300

Olá pessoal.

Bem eu acho que não me expressei bem, mas como muitos do grupo já estão
acostumados com isso, eu diria que é até um exercício de regex entender o
que a galera pergunta aqui.

Perguntar as coisas em um momento de pressão é horrivel, pois provavelmente
você não passará todas a informações necessárias e ou incompletas.

A idéia é muito similar a tags, que na verdade não deixa de ser, só que
chamamos internamente de marcações. =P

Exemplo.
Texto: "Mais informações no site do projeto Gnome [1]"

O que eu faço, pego o [1] e coloco um _ depois do colchete que fecha ficando
assim: [1]_. Essa marcação é utilizada pelo txt2tags [2], justamente do
Marinho... =)

Mas eu tenho que "tagear" esses arquivos, então estou automatizando parte do
processo.

A ajuda dos Julio e do Cristiano foram muito boas. Obrigado aos 2 Mas como
eu mesmo esperava, eu achei a solução a partir da dica dos 2.

Como disse, uso o Geany [3], e ele tem um suporte a busca e substituição por
regex. Graças aos agrupamentos e o retrovisor em regex eu busco e substitu
as "marcações" assim:

Find: (\[[1-9]\])
Replace: \1_

E os outro padrões ficaram assim:

Find: (figura [1-9])
Replace: ??\1??

Resultado = (??figura 1??)

Resumindo, a solução foi mais fácil que imaginei, e mais simples que as
propostas.

Desculpem o texto gigante, seria mais fácil ter blogado a resposta, mas
pensei que seria interessante compartilhar a solução até mesmo pela
simplicidade da solução. =)

[1] www.gnome.org
[2] http://txt2tags.sourceforge.net/
[3] http://www.geany.org/

[ ]'s
Mauro Navarro Baraldi
address@hidden
Skype: mauro.baraldi
Celular: +55 11 67370053
Fone: +55 11 36752600

Good thoughts are no better than good dreams, unless they be executed.


2010/7/13 Cristiano <address@hidden>

>
>
>
>
> --- Em address@hidden <shell-script%40yahoogrupos.com.br>,
> "Mauro" <mauro.baraldi@...> escreveu
>
> >
> > Boa tarde senhores.
> >
> > Tenho alguns arquivos que tenho que alterar partes deles seguindo um
> padrão mas não estou conseguindo encontrar um caminho por ser algo un tanto
> quanto específico.
> >
> > Um exemplo é o seguinte.
> >
> > Original: [1]
> > Alterado: [1]_
> >
> > Mas o conteúdo de dentro dos colchetes pode alterar, tanto o caracter
> como a quantidade de caracteres ([2] ou [35]). E ainda há outras padrões
> como:
> >
> > Original: (fonte 2)
> > Alterado: ??(fonte 2)??
> >
> > Encontrar o padrões não é o problema. A dificuldade é manter o "meio"
> intacto e mudar o resto.
> >
> > Eu estou usando um editor de textos gráfico, o Geany para ser mais
> específico, mas se postarem exemplos ou dicas com sed eu me viro para
> adaptar.
> >
> > [ ]'s
> > Mauro Baraldi
> >
>
> Mauro, você pode usar o sed e o conceito de grupos e, como chama o Aurélio,
> retrovisores, das expressões regulares.
>
> Antes de mais nada dá uma olhada na teoria:
>
> Sobre os grupos:
> http://guia-er.sourceforge.net/grupo.html#2_4_3
>
> Sobre o 'retrovisor':
> http://guia-er.sourceforge.net/retrovisor.html
>
> Para resolver seu problema, crie uma ER com 3 grupos, sendo uma primeira
> parte composta de um grupo que case com o início da linha até o primeiro
> colchete, uma segunda parte intermediária que case com o número entre os
> colchetes, ou seja, a parte que você quer manter, e uma última parte casando
> com a parte que vai do seguindo colchete até o fim da linha.
>
> Use o comando se substituição do sed (s) para substituir a ER composta
> pelos 3 grupos por "algo novo" + grupo 2 + "outro algo novo".
>
> Tenta montar a ER e se, não conseguir, poste para a gente.
>
> 2 dicas de antemão, que lhe pouparão tempo:
>
> 1) use o grep (ou egrep) para testar a ER, com a opção --color=auto. É mais
> fácil de testar o casamento (ou não) da ER do que direto pelo sed.
>
> 2) Atente para os caracteres especiais (metacaracteres) ao construir seu
> padrão. Colchetes e parênteses possuem superpoderes nas expressões regulares
> e precisam ser devidamente escapados para serem corretamente casados.
>
> Mais sobre como 'escapar' estes caracteres em:
>
> http://guia-er.sourceforge.net/escape.html#2_4_1
>
> Atente também para o fato de que o grep e o sed tratam os metacaracteres de
> maneira diferente do egrep. Portanto, se seu padrão casar com o egrep e os
> metacaracteres não forem corretamente escapados no sed, seu código irá
> falhar.
>
> Leia mais sobre isso no item 19 do canivete do Aurélio:
>
> http://aurelio.net/shell/canivete.html
>
> Se não conseguir montar a ER, posta para a gente o que você tentou.
>
>  
>


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



reply via email to

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