Linux en Espanol
 
Caso con SED (tema #24551)
Publicar nuevo tema  Responder al tema    Foros de discusión -> Programación
Autor Mensaje
lobo115
Forista
Registrado: 2012-11-07
Mensajes: 12

Publicado: 2012-11-07 23:01:48    Asunto: Caso con SED

Buenas, tengo un peque?o problema al usar el comando sed en ciertos archivos, cuando uso el comando para reemplazar en algunos archivos no lo quiere hacer, pero si utilizo kate o gedit y abro el archivo y selecciono todo y lo copio en uno nuevo en ese momento me trabaja perfectamente el comando sed, pero si en el archivo que no trabaja en vez de hacer esto lo abro con cat y lo paso a otro este otro tampoco realiza el reemplazo. Quisiera saber si alguien tiene alguna ide de por que sucede esto.
Adjunto link con los archivos de ejemplo. El comando que utilizo seria

sed -i -f hola.sed prueba2.txt

https://docs.google.com/folder/d/0B-hYwuwjVZweanV0aEhkcWJoclE/edit
-hola.sed=archivos de comandos para sed, tambien lo hice de manera manual sin este archivo e igual no hace ninguna de las sustituciones
-prueba2.txt=archivo a modificar, al usar la opcion i estoy haciendo que haga la sustitucion en el mismo archivo.
prueba2.bien= es el archivo con el mismo contenido fue copiado y pegado con gedit
Muchas Gracias
miguelgf
Forista


Registrado: 2006-12-28
Mensajes: 621

Publicado: 2012-11-07 23:45:39    Asunto:

Hola.

El problema es de juego de caracteres. Si ejecutas la orden "file" para todos tus archivos ver?s que unos son UTF-8 y otros ISO-8859[code:1:e35cec8cea]
usuario@localhost ~/download/prueba8 $ file *
hola.sed: UTF-8 Unicode text
prueba2.bien: UTF-8 Unicode text
prueba2.srt: ISO-8859 text, with CRLF line terminators
prueba2.txt: ISO-8859 text, with CRLF line terminators[/code:1:e35cec8cea]
hola.sed, que es el srchivo de ?rdenes de sed es utf-8, por eso funciona bien contra prueba2.bien que tambi?n es utf-8 pero funciona mal contra los otros dos, que son iso-8859
Si cuando lo haces "manualmente" te funciona bien o mal en los mismos casos es porque el terminal lo abres con el juego de caracteres utf-8

Prepara un archivo de ?rdenes a sed en el mismo juego de caracteres que el fichero de datos que vas a usar.

Otra opci?n es hacer un "iconv" a los ficheros para pasarlos al juego de caracteres adecuado.

Saludos.
lobo115
Forista
Registrado: 2012-11-07
Mensajes: 12

Publicado: 2012-11-08 00:36:54    Asunto: Gracias

Hola, Muchas gracias, converti el archivo a UTF-8 y me trabajo correcto, Gracias de nuevo :D





La marca registrada Linux (R) se usa siguiendo la sublicensia obtenida del "Linux Mark Institute",
el LICENCIATARIO exclusivo de Linus Torvalds, propietario de la marca en EEUU y otros países
The registered trademark Linux (R) is used pursuant to a sublicense from the Linux Mark Institute,
the exclusive LICENSEE of Linus Torvalds, owner of the mark in the U.S. and other countries