[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.