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

Décembre 2016


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

A voir également :

Ce document intitulé «  Sed - Conversion retours chariots DOS (CRLF) / UNIX (LF)  » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.