85 votes

Utilisez la commande `grep` pour trouver les fichiers contenant ^M (retour chariot Windows)

Je utilie Linux. Il y a un ^M ennuyeux (retour chariot Windows) quelque part caché dans des milliers de fichiers de configuration, et je dois le trouver, car cela fait échouer le serveur.

Comment trouver ^M parmi une hiérarchie de répertoires remplis de fichiers de configuration?

Je pense que je ne peux pas entrer ^M sur la ligne de commande bash. Mais je l'ai dans un fichier texte que j'ai appelé m.txt

0voto

Jeff Atwood Points 31111

En style d'expression régulière, diverses sauts de ligne :

Windows (CR LF)
\r\n

Unix (LF)
\n

Étant donné que la séquence \r\n est assez unique, je pense que vous devriez pouvoir la rechercher de cette façon ?

Pour aggraver les choses, les Mac avaient l'habitude d'utiliser simplement '\r' à la place du saut de ligne. Je ne peux pas le vérifier, mais je ne pense pas que les générations MacOSX le fassent encore aujourd'hui.

Anciens Mac (CR)
\r

0voto

kortina Points 101

Si vous êtes sur un Mac et utilisez homebrew, vous pouvez faire :

brew install tofrodos
fromdos file.txt

pour supprimer tous les retours chariot Windows du fichier file.txt

Pour rétablir les retours chariot Windows,

todos file.txt

0voto

Suite aux réponses précédentes, la méthode tr est bonne :

533$ if [[ -n "`tr -cd "\r" <~/.bashrc`" ]]; then echo "DOS"; else echo "UNIX"; fi
UNIX

534$ if [[ -n "`tr -cd "\r"

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X