Accueil

Supprimer les ^M

Par jonesy.

Je vous propose deux méthodes afin de supprimer ces sales bêtes.

Avant tout, sachez que le ^M que vous voyez dans votre fichier texte est la manifestation du retour à la ligne des fichiers sur un système Microsoft Windows.

Mais comment voir les caractères invisibles ? Je les vois.

Sur les Unix-like (Linux, *BSD, Mac OS X, ...) le retour à la ligne est le code ascii 10 (0A en hexadécimal), qui signifie "Line Feed" ou "retour ligne" alors que sous un système de Microsoft, le retour à la ligne est l'ensemble des deux codes ascii dans l'ordre : 13 et 10 (0D et 0A en hexadécimal) qui signifie Carriage Return (retour chariot) et Line Feed (saut de ligne).

Donc pour supprimer ces fameux ^M, c'est à dire le code ascii 13 de trop, faîtes comme suit :

Première méthode:

Ouvrer votre fichier avec vi (ou vim, ...). Une fois le fichier ouvert, tapez :

:%s/<Ctrl-v><entrée>//g

Pour rendre cette manipulation plutôt ingrate automatique, faîtes-en une macro sous vim/gVim ! Editer votre fichier ~/.vimrc et ajoutez-y la ligne suivante :

map v :%s/<Ctrl-v><Ctrl-v><Ctrl-v><Ctrl-v><Ctrl-v><entrée>//g

Ensuite, lorsque vous ouvrirez un fichier avec des ^M, il vous suffira de taper v et entrée.

Seconde méthode:

$ cat <votre_fichier> | tr -d ' ' ><votre_fichier>.tmp && mv <votre_fichier>.tmp <votre_fichier>

Ces solutions ont l'avantage de fonctionner sur tous les systèmes Unix-like.

Vous pouvez aussi utiliser tous les éditeurs qui ont un mode hexadécimal, tel que (x)Emacs, ou encore Vim. Ou un éditeur hexadécimal (bpe).

Thèmes : #administration #developpement #jonesy #trucs

Sauf indication contraire, ce document est placé sous licence CC-BY-SA 3.0.