los fastidiosos caracteres "^M" al final de cada línea de texto
Cuando se generan archivos de texto en windows (en el Notepad, por ejemplo) y se copian a unix para trabajar con ellos, resulta que "aparecen" algunos caracteres "raros" al final de cada línea, que a veces se ven como la combinación de los caracteres: ^M. Esto se debe a que el formato que maneja windows para un fin de línea lleva dos caracteres: "new line" y "carriage return" (\n\r), mientras que en unix sólo se usa el de "new line" (\n). (En Mac se usa sólo "carriage return" (\r))
A mí me sucedió que me pasaron un archivo con una lista de números que yo tenía que comparar con otra lista y hacer algunas operaciones más, y al hacer la comparación con el comando diff, no obtuve los resultados esperados, y al guardar el resultado de la salida del diff, me di cuenta de que aparecían los dichosos caracteres ^M, y por eso todas las líneas entre ambos archivos eran distintas.
Entonces encontré la manera de convertir el archivo que provenía de windows para quitarle esos caracteres, con el comando siguiente:
tr -d '\015' <> unix-format.txt
También es posible hacer la operación inversa, cuando se quiere llevar un archivo de unix a windows:
sed -e 's/$/\r/' unix-format.txt > win-format.txtDespués encontré otro blog interesante al respecto. Transcribo (copy-paste) aquí el contenido y luego incluyo el URL:
If the ^M character is showing up in files while opening the file concerned, then follow these steps to convert it to a new line.
In vi use the following:
:%s/^M/\n/g
or with perl on the command line:
$ perl -pi.bak -e ’s/^M/\n/g’
NOTE: Be sure to create the ^M by typing ctrl V followed by ctrl M.
^M is ASCII 13 (Ctrl M), which is the carriage return.
Different operating systems use different symbols to set the end of a line/new line.
Unix uses newline (\n)
Mac uses carriage return (\r)
And Windows/DOS use both (\n\r)
To prevent the ^M from showing up in files, be sure to use the ASCII (text) mode when transfering text files.
http://blog.eukhost.com/webhosting/convert-m-to-newline-character-in-text-files/Ahi quedó.
0 Comments:
Publicar un comentario
<< Home