Buscar y reemplazar usando el comando Grep y Sed

1

Quiero eliminar los caracteres extraños / especiales del grupo de archivos de texto. Aquí utilicé el siguiente comando para eliminar los caracteres extraños, pero me da el error.

Comando:

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

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

3) grep -lri -e à ¢ â¬Å temp.txt | xargs perl -piew 's_à ¢ â¬Å _ "_ g'

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

Aquí quiero reemplazar à ¢ â¬Å este personaje con "cita".

Estos son algunos de los caracteres extraños que quiero eliminar de los archivos de texto:

â € “, â €",; ,:,! , ¡, ¿,  ·, â € š, â € ¹, â € º,  », @, /, [,] \, \ ^, +, \, \ $, \ s, &, # ,%, â €, â € ¡, `, ´, ¯, ˘, ¨, §, ¶,  ©, ®, â„,  °, º, ∠‚, ∠†, âˆ, ∠',  ±, =, â ‰, ¬, \,, ~, ∠«, €, ª, Ã, à ¢, Ã…, ä, à †, à ‡, è, à «, ï¬, fl, Æ ', Ã, ì, î, ï, ó, ², ô, ö, õ, ø, Å “, ß y así sucesivamente.

Por favor, ayúdame en esto y también sugiere el comando para eliminar el montón de personajes extraños.

Amit Durge
fuente
1
¿Qué error estás recibiendo?
slhck
2
Por favor, no publique mensajes cruzados . La misma pregunta sobre stackoverflow .
Thor
Aquí quiero reemplazar à ¢ â¬Å este carácter con "cita. Del mismo modo 1) ú con u (letra minúscula u) 2) õ con o (letra minúscula o) 3) Ãâ € ˜ con N (letra mayúscula N) 4) à © con e (letra minúscula e) 5) ú con u (letra minúscula u) -
Amit Durge
@Thor Ya he marcado esto para cerrar Stack Overflow ya que no es realmente un ... problema de programación. Gracias por traer a nuestra atención.
slhck
1
Tu pregunta no está clara. Publique el archivo real en el que desea trabajar. Como sugirió @slhck, este es probablemente un problema de codificación y todo lo que necesita hacer es configurar la codificación correcta.
terdon

Respuestas:

1

El perlcomando puede operar fácilmente en un conjunto de archivos. No es necesario que greplos archivos busquen una determinada cadena, luego pasen esos nombres de archivo a través de una tubería xargsy luego a perl. Esto definitivamente será un punto de equilibrio en el simple caso de que cualquiera de los archivos contenga espacios en su nombre.

¿Por qué no hacer lo siguiente, por ejemplo, para eliminar caracteres no válidos?

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

O, para eliminar caracteres no ASCII:

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

O, para reemplazar un cierto personaje con otro:

perl -pi -e 's/ú/u/g' *.txt
slhck
fuente
Aquí quiero reemplazar à ¢ â¬Å este carácter con "cita. Del mismo modo 1) ú con u (letra minúscula u) 2) õ con o (letra minúscula o) 3) Ãâ € ˜ con N (letra mayúscula N) 4) à © con e (letra minúscula e) 5) ú con u (letra minúscula u) Entonces, ¿cuál es el comando?
Amit Durge
1
No es necesario copiar y pegar el mismo comentario. Para reemplazar ââ¬Åcon una cita, use s/ââ¬Å/"/g, etcétera. Ver: Patrones de texto de Perl para buscar y reemplazar , pero en realidad, estoy bastante seguro de que su problema es solo que el archivo que tiene está codificado incorrectamente, ¿verdad? ¿No sería mejor arreglar la codificación general de caracteres? ¿De dónde sacaste el archivo?
slhck
perl -pi -e 's / ú | â / / / u / g' * .txt de esta manera quiero agregar varios caracteres extraños para reemplazar con algún texto
Amit Durge
Se puede poner múltiples expresión en el comando Perl: perl -pi -e 's/foo/bar/g; s/yak/yaz/g; s/…/…/g; …' *.txt. No hay forma de evitar eso, en realidad, a menos que desee escribir un script en el que pueda colocar las cadenas de reemplazo en una matriz asociativa de algún tipo. Pero eso probablemente sería excesivo aquí.
slhck
ok También ¿Cómo puedo usar la expresión regular? Por favor dame el ejemplo.
Amit Durge