Lorsque vous éditez un fichier texte sur Linux avec vim, nano, gedit ou tout autre éditeur, vous apercevez les caractères ^M à la fin de chaque ligne.
Que sont ces caractères ^M et surtout comment supprimer les ^M ?
Dans ce tutoriel, je vous explique comment sont arrivés ces caractères ^M en fin de ligne et surtout comment les supprimer.
Pour y parvenir, je vous donne plusieurs méthodes avec vim, sed, dos2unix et notepad++ pour corriger le retour à la ligne.
Table des matières
Comment supprimer les ^M dans les fichiers Linux
Vim (méthode 1)
- Ouvrez le fichier en édition avec vim
- Puis saisissez :
:%s/^M/\r/g
- Vérifiez que les caractères ^M en fin de ligne sont supprimés
- Enregistrez les modifications :
:wq
Vim (méthode 2)
Dans cette seconde méthode, on passe le fichier au format Unix :
- Ouvrez le fichier en édition
- Puis saisissez :
:set ff=unix
- Enfin enregistrez les modifications :
:wq
Vim (Méthode 3)
Enfin une dernière méthode avec le mode étendu de vim :
ex -bsc '%s/\r//|x' file
- -b : mode binaire
- % : sélectionner toutes les lignes
- s : remplacer
- \r : retour chariot échappé
- x : enregistrer et quitter
Sed
sed (stream editor) est une commande linux puissante pour effectuer des opérations de texte.
Vous pouvez l’utiliser pour supprimer les ^M de cette manière :
sed 's/^M$//' fichier
Si cela est correct, alors appliquez les modifications directement au fichier avec l’option -i :
sed -i 's/^M$//' fichier
Voici une autre syntaxe pour supprimer les ^M en les remplaçant par des retours chariots UNIX :
sed -i -e "s/\r//g" fichier
- -i : modifier le fichier directement
- -e : expression régulière
- \r : retour chariot échappé
- /g : remplacement globalement
Dos2unix
dos2unix est un utilitaire dédié pour changer le mode de fichier DOS vers UNIX.
Ce n’est pas un utilitaire natif, il faut l’installer, par exemple avec APT :
sudo apt install dos2unix
Puis pour convertir le format d’un fichier :
dos2unix <fichier>
Notepad++
Notepad++ est un éditeur de texte open source qui permet de changer très facilement le format de retour à la ligne.
Ainsi, vous pouvez très facilement supprimer les ^M.
Pour afficher les caractères de retour à la ligne dans Notepad++ : Menu Affichage > Symboles spéciaux > Afficher les symboles de fin de ligne.
Pour changer le format de retour de ligne : Menu Edition > Convertir les sauts de ligne > choisissez le format Windows (CR+LR), Format Unix (LF) ou le format Mac (CR)
Ici le même fichier texte avec un retour à la ligne Windows (CRLF)
Ou un retour à la ligne format UNIX (LF).
Les ^M et retour à la ligne Unix et DOS
Les caractères ^M en fin de ligne apparaissent lorsque vous créez un fichier texte sur Windows et que vous transférez le fichier sur Linux par exemple avec SCP ou FTP.
Ils correspondent au retour chariot de fichier sur DOS.
En effet le retour chariot est différent dans le monde Linux et le monde Windows.
Univers | Caractère retour chariot | Nom | Systèmes d’exploitation |
UNIX | LF , code 10 de la table ASCII) | Line Feed | Linux, AIX, Xenix, Mac OS X, etc.), BeOS, AmigaOS, et RISC OS |
Mac | CR , code 13 de la table ASCII | Carriage Return (Retour de chariot) | Apple II et Mac OS |
Windows | LF + CR | CP/M, MP/M, MS-DOS, OS/2 et Microsoft Windows |
Les définitions :
- CR : Carriage Return (Retour de chariot) ;
- LF : Line Feed
- NL : New Line
L’option -A de la commande cat permet d’afficher les retour chariots.
Par exemple, ci-dessous, on voit le retour chariot Linux et Windows (CR) avec ^M.
Liens
- 12 exemples pour utiliser la commande cat sur Linux
- 6 exemples pour utiliser la commande tail sur Linux
- Comment utiliser la commande less sur Linux avec des exemples
- La commande cut de Linux : utilisation et exemples
- Comment utiliser la commande AWK avec des exemples
- Commande sed : utilisation et exemples
- 12 exemples de commandes grep sur Linux
- La commande TR : utilisations et exemples
- La commande echo : utilisations et exemples
- La commande sort Linux : utilisations et exemples
- La commande join Linux : utilisations et exemples