Wie heißt das ^ M-Zeichen?

Antworten:

53

Es ist als Wagenrücklauf bekannt.

Wenn Sie verwenden vim, können Sie in den Einfügemodus wechseln und CTRL- v CTRL- eingeben m. Das ^ M ist die Tastaturentsprechung zu \ r .

Das Einfügen 0x0Din einen Hex-Editor erledigt die Aufgabe.

Wie zu entfernen?

Sie können es mit dem Befehl entfernen perl -p -i -e "s/\r//g" filename.

Wie das OP in den Kommentaren zu dieser Antwort hier vorschlug , können Sie sogar versuchen, ein dos2unix filenameProblem zu beheben.

Wie @steeldriver in den Kommentaren vorschlägt, drücken Sie nach dem Öffnen des VIM-Editors die escTaste und geben Sie Folgendes ein :set ff=unix.

Verweise

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

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

-ksh: revenue_ext.ksh: nicht gefunden [Keine solche Datei oder kein solches Verzeichnis]

Ramesh
quelle
3
es könnte sein , erwähnenswert vi / vim :set ff=unixauch
steeldriver
@steeldriver, fertig :)
Ramesh
Danke, @Ramesh. Ich habe keine Ahnung, wie man diese Tastaturcodes macht. Du bist ein guter Junge.
mikeserv
1
@mikeserv, verwenden Sie die Taste <kbd> </ kbd>, um die Tastatursymbole zu verwenden. :)
Ramesh
2
+1 für die Beantwortung der eigentlichen Frage "Wie heißt es"
Andrew Lorien
7

Code

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

^MVerwenden Sie beim Eingeben des Befehls nicht shift+6 & M. Sie sollten verwenden ctrl+v+m.

Kashyap
quelle
1
Willkommen bei Unix Stackexchange! Bitte beachten Sie, wie Sie den Body für den Code formatieren. Keine Notwendigkeit für Dank und andere am Ende.
Léo Léopold Hertz 준영
1

Sie können dies auch mit sed tun

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

Als Notizen Ramesh, CTRL+ V CTRL+ Msollten Sie die wörtliche Charakter bekommen - wenn Sie dies tun , nur in nicht darauf beschränkt sind vim- Sie sollten das gleiche auf jedem kanonischen Modus tty tun können.

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

... könnte den Job machen.

mikeserv
quelle
1
Wenn
@ 1_CR Ich lese aus der |pipeDatei. Eine temporäre tmp-Datei wäre zwar robuster, aber der Puffer in der Pipe sollte ausreichen. Für den Fall, dass tr -d '\r' <<FILE >./file\n$(cat ./file)\nFILE\ndies nicht der Fall ist, wäre dies eine sichere Sache - vorausgesetzt, die Datei enthält keine \000Zeichen.
mikeserv
Dies wird mehr als wahrscheinlich gelöscht, ./filebevor cateine Chance besteht, es zu lesen. Alle Befehle einer Pipeline werden parallel gestartet und Umleitungen werden von der Shell verarbeitet, bevor der betroffene Befehl ausgeführt wird.
Juli
@mikeserv re the heredoc-containing- $(cat)fix: oder (signifikante) nachgestellte Leerzeilen oder nicht abgeschlossene letzte Zeile oder mehr Daten, als in den verfügbaren Speicher passen. (rm file; tr -d '\r' >file) <fileVermeidet diese, wenn die Neuerstellung der Datei in Ordnung ist (setzt Eigentümer / Gruppe / Permbits / ACL / Kontext / etc)
Dave_thompson_085