Come si chiama il carattere ^ M?


Risposte:


53

È noto come ritorno a capo.

Se stai usando vimpuoi entrare nella modalità di inserimento e digitare CTRL- v CTRL- m. Che ^ M è la tastiera equivalente a \ r .

L'inserimento 0x0Din un editor esadecimale farà il compito.

Come rimuovere?

Puoi rimuoverlo usando il comando perl -p -i -e "s/\r//g" filename.

Come l'OP ha suggerito nei commenti di questa risposta qui , puoi anche provare a dos2unix filenamee vedere se ciò lo risolve.

Come suggerisce @steeldriver nei commenti, dopo aver aperto l'editor vim, premere il esctasto e digitare :set ff=unix.

Riferimenti

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

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

-ksh: income_ext.ksh: non trovato [nessun file o directory simile]


3
forse vale la pena di menzionare vi / vim :set ff=unixcome pure
steeldriver

@steeldriver, done :)
Ramesh,

Grazie, @Ramesh. Non ho idea di come fare quei codici da tastiera. Sei un bravo ragazzo.
Mikeserv,

1
@mikeserv, usa il tasto <kbd> </kbd> per usare i simboli della tastiera. :)
Ramesh,

2
+1 per aver risposto alla domanda reale "come si chiama"
andrew lorien,

7

Codice

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

Durante la digitazione ^Mdel comando, non utilizzare shift+6 & M. Si dovrebbe usare ctrl+v+m.


1
Benvenuto in Unix Stackexchange! Nota come formattare il corpo per il codice. Non c'è bisogno di ringraziamenti e altri alla fine.
Léo Léopold Hertz


-1

Come osserva Ramesh, CTRL+ V CTRL+ Mdovrebbe darti il ​​carattere letterale - sebbene non ti limiti a farlo solo in vim- dovresti essere in grado di fare lo stesso in qualsiasi modalità canonica tty.

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

... potrebbe fare il lavoro.


1
stai leggendo e scrivendo nello stesso file, ciò non causerebbe problemi
iruvar,

@ 1_CR Sto leggendo dal |pipefile. È vero, un file tmp intermedio sarebbe più robusto, ma il buffer nel pipe dovrebbe essere sufficiente. Tuttavia, nel caso non lo fosse, tr -d '\r' <<FILE >./file\n$(cat ./file)\nFILE\nsarebbe una cosa certa - a condizione che il file non contenga \000caratteri.
Mikeserv,

Molto probabilmente questo cancellerà ./fileprima che catabbia la possibilità di leggerlo. Tutti i comandi di una pipeline vengono lanciati in parallelo e i reindirizzamenti vengono elaborati dalla shell prima dell'esecuzione del comando interessato.
jlliagre,

@mikeserv re la $(cat)correzione contenente heredoc : o (significative) righe vuote in coda o ultima riga non terminata, o più dati di quelli che si adattano alla memoria disponibile. (rm file; tr -d '\r' >file) <fileevita quelli, se ricreare il file va bene (azzera proprietario / gruppo / permbits / ACL / contesto / etc)
dave_thompson_085
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.