Pesquisa e substituição usando o comando Grep e Sed

0

Eu quero remover os caracteres estranhos / especiais do monte de arquivos de texto. Aqui eu usei o seguinte comando para remover os caracteres estranhos, mas isso me dá o erro.

Comando:

1) grep -lri -e à ¢ â tempÅ | xargs sed -i 's_â € "_ g'

2) grep -lri -e à ¢ â tempÅ | xargs sed -i 's / à ¢ â /Å / "/ g'

3) grep -lri -e â tempÅ | xargs perl -pista 's_â € "_ g'

4) grep -lri -e à temp.txt | xargs perl -piew 's / à ¢ â /Å / "/ g'

Aqui eu quero substituir este caractere por "quote.

Estes são os caracteres estranhos que eu quero remover dos arquivos de texto:

â € “, â €“; :! Â, â, ¹, », \ ^, +, \, \ $, \ s, & , #,%, ',', ', ¨, ¨, §,  ©, ®, º, º, âˆ, âˆ, ∠',  ±, =, â',  ', \, ~, «, ®, ï, ³, ², Ã, Ã, õ, à Å, Å “, Ÿ e assim por diante.

Por favor, ajude-me neste & Sugira também o comando para remover o monte de personagens estranhos.

    
por Amit Durge 12.02.2013 / 14:37

1 resposta

1

O comando perl pode operar facilmente em um conjunto de arquivos. Não há necessidade de grep dos arquivos para procurá-los por uma determinada string, em seguida, passar esses nomes de arquivo através de um pipe para xargs e então para perl . Isso definitivamente vai quebrar mesmo no caso simples de que qualquer um dos arquivos contenha um espaço em seu nome.

Por que não fazer o seguinte, por exemplo, para remover caracteres inválidos?

perl -pi -e 's/[—Ç…]//g' *.txt

Ou para remover caracteres não ASCII:

perl -pi -e 's/[^[:ascii:]]//g' *.txt

Ou para substituir um determinado caractere por outro:

perl -pi -e 's/ú/u/g' *.txt
    
por 12.02.2013 / 14:45

Tags