Conversión de formato de archivos DOS a UNIX y viceversa
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
PD: El
artículo original fue escrito por jipicy, contribuidor de
CommentCaMarche