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


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
Publié par jipicy - Dernière mise à jour le 18 novembre 2009 à 16:54 par marlalapocket
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.
Suggestions
  •  Sed - Conversion retours chariots DOS (CRLF) / UNIX (LF)
  •  Retour à la ligne sous DOS ? » Meilleure réponse: echo\ cordialement
  •  [SED]-Supprimer des codes ascii » Bonjour, comment faire pour supprimer la chaine composée des deux car hexa 5C et 0A... sed "s/\x5c\x0a//" ne fait pas le boulot demandé. Il n'a pas l'air de reconnaitre une expression régulière. Je ne souhaite pas supprimer les car 5C et 0A qui se...
  •  Retour chariot avec commande sed » Meilleure réponse: Salut, Tiens jette un oeil là : http://www.commentcamarche.net/forum/affich-1633142 ;-))
  •  RSH dos/unix : Modifier retour chariot » Bonjour, J'exécute un programme sur un serveur unix (ksh) distant depuis mon poste windows XP via cmd et en utilisant rsh. Jusque là aucun problème. Mais le programme en question attend des entrées de ma part ce qui là encore ne pose pas de problème...
  •  Sed - Insérer des espacements » Fiches pratiques : Espacement dans un fichier * Ajouter une ligne blanche après chaque phrase (ponctuée par un retour chariot) : sed G fichier.txt Ajouter une ligne blanche après chaque phrase (ponctuée par un retour chariot), sans tenir compte des lignes...
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?
Sed - Insérer des espacements
Sed - Mettre la première lettre d'un mot en majuscule