Menu
Donnez votre avis

Sed - Conversion retours chariots DOS (CRLF) / UNIX (LF)

Posez votre question

Conversion format de fichier DOS <> UNIX / UNIX <> DOS




Préambule


Il existe déjà des utilitaires (dos2unix et unix2dos) qui s'acquittent très bien ce cette tâche, mais rien ne vous empêche de vouloir le faire par vous même des fois que le système sur lequel vous travaillez ne possède pas ces outils et que vous soyez dans l'impossibilité de les installer.

Ce qu'il faut savoir


Les fichiers textes sous Unix (et ses descendants) terminent leur ligne par un caractère "saut de ligne", représenté par le symbole "\n" (appelé Line Feed et noté LF, code ASCII = 0A).


Les fichiers texte sous Dos (et ses descendants) terminent eux aussi leur ligne par un caractère "saut de ligne", précédé d'un caractère retour chariot, représenté par le symbole "\r" (appelé Carriage Return et noté CR, code ASCII 0D). Ainsi, chaque ligne d'un fichier DOS se termine par la séquence CRLF, soit \r\n.

Conversion DOS vers UNIX


Il suffit simplement d'effacer le caractère "\r" (retour chariot) de fin de ligne.
Le caractère "\r" (retour chariot) est représenté symboliquement par "^M", qui s'obtient par la séquence de touches suivante "CTRL-V" + "CTRL-M".
sed 's/^M$//' fichier

Note :

Avec la version GNU-sed (gsed 3.02.80 et supérieur), on peut utiliser la notation ASCII :
sed 's/\x0D$//' fichier

Conversion UNIX vers DOS


Il suffit de faire le contraire de la commande précédente, à savoir (le caractère "^M" étant saisit de la même façon (CTRL-V + CTRL-M)) :
sed 's/$/^M/' fichier

Note :

Avec la version GNU-sed (gsed 3.02.80 et supérieur), on peut utiliser la notation symbolique "\r":
sed 's/$/\r/' fichier
Ajouter un commentaire

Commentaires

Commenter la réponse de Utilisateur anonyme