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
PD: El artículo original fue escrito por jipicy, contribuidor de CommentCaMarche