Les fins de lignes de fichiers texte du monde MS Windows (\r\n) ne sont pas écrits de la même façon dans le monde GNU/Linux et Unix (\n). Celà implique quelques soucis de lecture lors de transfert de fichier entre des systèmes hétérogènes. Néanmoins plusieurs des solutions existent pour s’abstenir de ces incommodités.
$dos2unix mon_fichier.txt
$fromdos mon_fichier.txt
D’ailleurs il existe leur equivalent pour faire la manipulation inverse. A savoir, transformer un fichier texte au format GNU/Linux (ou Unix) en un fichier texte pour MS Windows :
$unix2dos mon_fichier.txt
$todos mon_fichier.txt
Avec vi : [echap]:%s/[ctrl+v][ctrl+m]//
Avec emacs : M-%
Avec joe : [ctrl+k+f]\015r[enter]r
Avec sed (avec fichier temporaire) :$sed -e 's/[ctrl+v][ctrl+m]//' mon_fichier.txt > mon_nouveau_fichier.txt
Avec sed (sans fichier temporaire) :$sed -ie 's/[ctrl+v][ctrl+m]//' mon_fichier.txt
Avec tr :$cat mon_fichier.txt | tr -d '\r' > mon_nouveau_fichier.txt
Avec le perl :$perl -pi -e 's/\r\n/\n/' mon_fichier.txt
Afin obtenir le caractère ^M, il faut taper la séquence de combinaisons de touches suivante :[ctrl+v][ctrl+m].
| Date | Nom | Message |
Pour cela il faut toujours penser a transferer les fichiers en mode binaire :)
En fait, les ^M apparaissent dans les fichiers texte provenant d’un système MS Windows lorsque l’on fait un transfert en mode binaire (BINARY). Si le transfert ce fait en mode texte (ASCII), votre fichier ne contiendra pas les ^M.
Avec vim (un clone de vi), pour transformer un fichier DOS en fichier Unix :
:set ff=dos
:x (pour sauvegarder et quitter)
Pour transformer un fichier Unix en fichier DOS :
:set ff=unix
:x
Pour sauvegarder au format Mac, ":set ff=mac" bien sûr...
Pour en savoir plus : ":help file-formats"