Quitar los ^M de fin de linea

Friday, May 19th, 2006 @ 12:37 pm | Notas rápidas

Sacado de por ahi…

Los dichosos ^M!.
Con demasiada frecuencia ocurre que importamos un texto de MS-DOS a UNIX, y al editarlo con el vi (por ejemplo), sale lleno de “^M” al final de todas las líneas. Lo primero, decir que no hay problema en el vim, porque si pones la opción “autotext” (:set autotext), el vim automáticamente detecta el tipo de fichero que es (DOS o UNIX), y si es DOS, quita los ^M de la pantalla. Esto de los ^M ocurre porque el delimitador de línea de los ficheros de texto en DOS es CR-LF (carriage return-linefeed, o sea, retorno de carro y salto de línea), y en UNIX son simplemente LF. Así, muchas herramientas de UNIX (al menos por defecto), buscan como delimitador de línea el LF, así que al final de cada línea hay un caracter extraño (el CR).
Esto, en vi, se puede arreglar fácilmente con la orden

	:%s/<ctrl-V><ctrl-M>//

Te comento por encima qué significa este chorizo: El “%” sirve para que se sustituya en todas las líneas, y no sólo en la actual, la “s” para que se realice una sustitución, el Ctrl-V Ctrl-M es necesario para que el vi no se crea que estamos pulsando un ENTER (Ctrl-V sirve para insertar literales), y, por supuesto, se sustituye por nada, así que entre la segunda y la tercera barras no ponemos nada.
Por si no te gusta el vi, puedes cambiar el formato de los ficheros de texto desde la línea de órdenes, escribiendo:

	sed 's/<ctrl-V><ctrl-M>//' fichero-CRLF >fichero-LF

Actualización : el ^M copiado de texto a consola se muestra como dos caracteres , pero realmente es uno. En la consola se puede generar con control+v + m con lo que un sed -i ‘d/^M/’ fichero deberia funcionar siempre y cuando ^M sea un solo caracter y no dos.

 

Leave a Reply

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

 

Recently

  • rebuild evolution indexes / reconstruir los indices de evolution mail
  • Experiencia con magento
  • Bombillas de bajo consumo, sí, pero ojo con el mercurio
  • calendario linuxero de JesusDa
  • Cosas espeluznantes nº 1
  • Pumu es un artista
  • sed: cannot rename .//sedDtwt6w: Invalid cross-device link
  • sed: cannot rename .//sedDtwt6w: Invalid cross-device link
  • [debian] Cambiar nano por vim como editor defecto
  • Notas sobre ALSA
  •