El problema del final de línea
El final de línea de los ficheros de texto creados en sistemas operativos UNIX se representa con un solo carácter LF (line feed, \ n, código ASCII 10), en cambio, en Windows se representa con dos caracteres CR+LF (carriage return, \ r, código ASCII 13 + line feed, \ n, código ASCII 10). Esto hace que si abrimos, por ejemplo, un fichero de texto de GNU/Linux con el bloc de notas de Windows, veremos las líneas juntas, pues se espera que las líneas estén separadas por los caracteres CR+LF y no por únicamente LF, y por lo tanto no reconoce la separación de las líneas.
Existen en Debian varios comandos que resuelven este problema convirtiendo los LF en CR+LF y a la inversa:
Comandos | Paquetes |
fromdos, todos | tofrodos |
dos2unix, unix2dos, mac2unix, unix2mac | dos2unix |
$ cat f.txt
Linea 1
Linea 2
Linea 3
$ hd f.txt
00000000 4c 69 6e 65 61 20 31 0a 4c 69 6e 65 61 20 32 0a |Linea 1.Linea 2.|
00000010 4c 69 6e 65 61 20 33 0a |Linea 3.|
00000018
$ todos f.txt
$ hd f.txt
00000000 4c 69 6e 65 61 20 31 0d 0a 4c 69 6e 65 61 20 32 |Linea 1..Linea 2|
00000010 0d 0a 4c 69 6e 65 61 20 33 0d 0a |..Linea 3..|
0000001b
En el ejemplo anterior, se ve cómo en un primer momento, el final de línea del fichero f.txt está formado por el carácter ASCII 0a en hexadecimal (10 en decimal), y posteriormente, tras ejecutar el comando todos, el final de línea lo componen dos caracteres, 0d+0a (13+10).
Los cuatro comandos pueden utilizarse como filtros, es decir, si no se especifican ficheros, se leerá de la entrada estándar y se escribirá sobre la salida estándar.
Licencia: licencia de software libre GPL