416 liens privés
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.
Prérequis
Il vous faut un fichier tout moche venant d’une plateforme MS Windows avec pleins de ^M. ;-)
Les outils
Il existe pleins de petits programmes qui font la conversion tout seul :
$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
Les editeurs
Un autre moyen est d’utiliser votre éditeur de fichier texte favoris. Dans ce cas les commandes à exécuter votre éditeur sont les suivantes :
- Avec vi :
[echap]:%s/[ctrl+v][ctrl+m]// - Avec emacs :
M-% - Avec joe :
[ctrl+k+f]\015r[enter]r
Le shell
Pour les plus téméraires entre vous qui ont la shell attitude dans le sang, qu’ils se rassurent !! Il est possible de le faire directement dans le shell à la mano.
- 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