Comment s'appelle le caractère ^ M?

Réponses:

53

Il est appelé retour chariot.

Si vous utilisez, vimvous pouvez entrer en mode insertion et taper CTRL- v CTRL- m. Ce ^ M est l’équivalent clavier de \ r .

L'insertion 0x0Ddans un éditeur hexadécimal remplira cette tâche.

Comment enlever?

Vous pouvez le supprimer en utilisant la commande perl -p -i -e "s/\r//g" filename.

Comme l'OP l'a suggéré dans les commentaires de cette réponse ici , vous pouvez même essayer un dos2unix filenameet voir si cela résout le problème.

Comme @steeldriver le suggère dans les commentaires, après avoir ouvert l'éditeur vim, appuyez sur la esctouche puis tapez :set ff=unix.

Références

https://stackoverflow.com/questions/1585449/insert-the-carriage-return-character-in-vim

https://stackoverflow.com/a/7742437/1742825

-ksh: revenue_ext.ksh: non trouvé [Aucun fichier ou répertoire de ce type]

Ramesh
la source
3
il vaut peut-être la peine de mentionner vi / vim :set ff=unixégalement
chauffeur d'acier
@steeldriver, terminé :)
Ramesh
Merci, @Ramesh. Je ne sais pas comment faire ces codes de clavier. Tu es un bon gars.
Mikeserv
1
@mikeserv, utilisez la <kbd> touche </ kbd> pour utiliser les symboles du clavier. :)
Ramesh
2
+1 pour répondre à la question "comment s'appelle-t-il"
andrew lorien
7

Code

sed -i 's/^M//' filename.txt

Lors de la saisie ^Mde la commande, n’utilisez pas shift+6 & M. Vous devriez utiliser ctrl+v+m.

Kashyap
la source
1
Bienvenue sur Unix Stackexchange! Veuillez noter comment formater le corps pour le code. Pas besoin de remercier et d'autres à la fin.
Léo Léopold Hertz 23/02/2017
1

vous pouvez aussi le faire avec sed

 sed -i "s/\r//g" filename
k_vishwanath
la source
-1

Comme le note Ramesh, CTRL+ V CTRL+ Mdevrait vous donner le caractère littéral - bien que vous ne soyez pas limité à le faire uniquement vim- vous devriez pouvoir faire la même chose sur n'importe quel mode canonique.

cat ./file | tr -d '\r' >./file

... pourrait faire le travail.

Mikeserv
la source
1
vous lisez et écrivez dans le même fichier, cela ne poserait-il pas un problème
iruvar
@ 1_CR Je suis en train de lire le |pipefichier. En réalité, un fichier tmp intermédiaire serait plus robuste, mais la mémoire tampon dans le canal devrait suffire. Néanmoins, au cas où ce tr -d '\r' <<FILE >./file\n$(cat ./file)\nFILE\nne serait pas le cas, ce serait une chose sûre - à condition que le fichier ne contienne aucun \000caractère.
mikeserv
Cela effacera probablement ./fileavant d' catavoir eu l'occasion de le lire. Toutes les commandes d'un pipeline sont lancées en parallèle et les redirections sont traitées par le shell avant l'exécution de la commande concernée.
juin
@mikeserv re le correctif contenant heredoc $(cat): ou des lignes vides (importantes) ou des dernières lignes non terminées, ou plus de données que ne le permet la mémoire disponible. (rm file; tr -d '\r' >file) <fileévite ceux-ci, si recréer le fichier est correct (réinitialise le propriétaire / groupe / permbits / ACL / contexte / etc.)
dave_thompson_085