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

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

Re: Substituição com expressão regular


From: Cristiano
Subject: Re: Substituição com expressão regular
Date: Tue, 13 Jul 2010 21:07:38 -0000
User-agent: eGroups-EW/0.82


--- Em address@hidden, "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.





reply via email to

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