Jak nazywa się znak ^ M?


Odpowiedzi:


53

Znany jest jako powrót karetki.

Jeśli używasz vim, możesz przejść do trybu wstawiania i wpisać CTRL- v CTRL- m. To ^ M jest klawiaturą odpowiadającą \ r .

Wstawienie 0x0Dw edytorze szesnastkowym wykona zadanie.

Jak usunąć?

Możesz go usunąć za pomocą polecenia perl -p -i -e "s/\r//g" filename.

Jak sugeruje PO w komentarzach do tej odpowiedzi tutaj , możesz nawet spróbować a dos2unix filenamei sprawdzić, czy to naprawia.

Jak sugeruje @steeldriver w komentarzach, po otwarciu edytora vim naciśnij escklawisz i wpisz :set ff=unix.

Bibliografia

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

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

-ksh :ext_ext.ksh: nie znaleziono [Brak takiego pliku lub katalogu]


3
być może warto wspomnieć vi / vim :set ff=unix, jak również
steeldriver

@steeldriver, gotowe :)
Ramesh

Dzięki, @Ramesh. Nie mam pojęcia, jak zrobić te kody klawiatury. Jesteś dobrym facetem.
mikeserv

1
@ mikeserv, użyj <kbd> klawisza </kbd>, aby użyć symboli klawiatury. :)
Ramesh

2
+1 za odpowiedź na pytanie „jak to się nazywa”
andrew lorien

7

Kod

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

Podczas wpisywania ^Mpolecenia nie używaj shift+6 & M. Powinieneś użyć ctrl+v+m.


1
Witamy w Unix Stackexchange! Pamiętaj, jak sformatować treść kodu. W końcu nie trzeba dziękować i innym.
Léo Léopold Hertz


-1

Jak zauważa Ramesh, CTRL+ V CTRL+ Mpowinien dać ci dosłowną postać - chociaż nie jesteś ograniczony do robienia tego tylko vimwewnątrz - powinieneś być w stanie zrobić to samo na dowolnym kanonicznym trybie tty.

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

... może wykonać zadanie.


1
czytasz i piszesz do tego samego pliku, czy nie spowoduje to problemu
iruvar

@ 1_CR Im czytam z |pipepliku. To prawda, że ​​pośredni plik tmp byłby bardziej niezawodny - ale bufor w potoku powinien wystarczyć. Jednak gdyby tak nie było, tr -d '\r' <<FILE >./file\n$(cat ./file)\nFILE\nto byłoby pewne - pod warunkiem, że plik nie zawiera \000znaków, to znaczy.
mikeserv

To najprawdopodobniej skasuje, ./filezanim będzie catmiało szansę go przeczytać. Wszystkie polecenia potoku są uruchamiane równolegle, a przekierowania są przetwarzane przez powłokę przed wykonaniem polecenia, którego dotyczy problem.
jlliagre

@ mikeserv re heredoc- $(cat)fix - fix: lub (znaczące) końcowe puste linie lub niezakończony ostatni wiersz lub więcej danych niż mieści się w dostępnej pamięci. (rm file; tr -d '\r' >file) <fileunika tego, jeśli odtwarzanie pliku jest w porządku (resetuje właściciela / grupę / uprawnienia / ACL / kontekst / itp.)
dave_thompson_085
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.