Sed – Conversión de retornos de carro DOS (CRLF) a UNIX (LF)

Noviembre 2016




Introducción


Actualmente existen herramientas (dos2unix y unix2dos) que cumplen bien esta tarea, pero puede que necesitemos hacerlo nosotros mismos en caso de que el sistema en que estemos trabajando no posea estas herramientas, y no podamos instalarlas.

Lo que hay que saber


En los ficheros de texto bajo Unix (y sus descendientes), las líneas terminan con un carácter “salto de línea”, representado por “\n” (llamado Line Feed y abreviado LF, código ASCII = 0A).

En los ficheros de texto bajo Dos (y sus descendientes), las líneas terminan con un carácter “salto de línea”, precedido de una carácter retorno de carro, representado por "\r" (llamado Carriage Return y abreviado CR, código ASCII 0D). De este modo, cada línea de un fichero DOS termina en CRLF, es decir \r\n.

Conversión de DOS a UNIX


Tan solo hay que eliminar el carácter "\r" (retorno de carro) al final de la línea.
El carácter "\r" (retorno de carro) es representado simbólicamente por "^M", que se obtiene con la combinación de teclas siguientes: "CTRL-V" + "CTRL-M".

sed 's/^M$//' fichero


Nota:

En la versión GNU-sed (gsed 3.02.80 y superior), es posible utilizar la notación ASCII

sed 's/\x0D$//' fichero

Conversión de UNIX a DOS


Tan solo hay que hacer lo contrario al comando anterior (el carácter "^M" es ingresado de la misma manera (CTRL-V + CTRL-M)):

sed 's/$/^M/' fichero


Nota:

En la versión GNU-sed (gsed 3.02.80 y superior), podemos utilizar la notación simbólica "\r":

sed 's/$/\r/' fichero


Consulta también :
El documento «Sed – Conversión de retornos de carro DOS (CRLF) a UNIX (LF)» de CCM (es.ccm.net) se encuentra disponible bajo una licencia Creative Commons. Puedes copiarlo o modificarlo siempre y cuando respetes las condiciones de dicha licencia y des crédito a CCM.