Apa yang disebut dengan karakter ^ M?

Jawaban:

53

Ini dikenal sebagai carriage return.

Jika Anda menggunakan, vimAnda dapat memasukkan mode dan ketik insert CTRL- v CTRL- m. Itu ^ M adalah keyboard setara dengan \ r .

Memasukkan 0x0Dhex editor akan melakukan tugas.

Bagaimana cara menghapus?

Anda dapat menghapusnya menggunakan perintah perl -p -i -e "s/\r//g" filename.

Seperti yang disarankan OP dalam komentar jawaban ini di sini , Anda bahkan dapat mencoba dos2unix filenamedan melihat apakah itu memperbaikinya.

Seperti @steeldriver menyarankan dalam komentar, setelah membuka editor vim, tekan esctombol dan ketik :set ff=unix.

Referensi

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

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

-ksh: revenue_ext.ksh: tidak ditemukan [Tidak ada file atau direktori]

Ramesh
sumber
3
mungkin layak disebut vi / vim :set ff=unixjuga
steeldriver
@steeldriver, selesai :)
Ramesh
Terima kasih, @Ramesh. Saya tidak tahu bagaimana melakukan kode keyboard itu. Kamu pria yang baik.
mikeserv
1
@mikeserv, gunakan tombol <kbd> </kbd> untuk menggunakan simbol keyboard. :)
Ramesh
2
+1 untuk menjawab pertanyaan aktual "apa namanya"
andrew lorien
7

Kode

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

Saat mengetikkan ^Mperintah, jangan gunakan shift+6 & M. Anda harus menggunakan ctrl+v+m.

Kashyap
sumber
1
Selamat Datang di Unix Stackexchange! Harap perhatikan cara memformat isi kode. Tidak perlu terima kasih dan yang lainnya pada akhirnya.
Léo Léopold Hertz 준영
1

Anda juga dapat melakukan ini dengan sed

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

Seperti yang dicatat oleh Ramesh, CTRL+ V CTRL+ Makan membuat Anda mendapatkan karakter literal - meskipun Anda tidak terbatas untuk melakukan ini saja vim- Anda harus dapat melakukan hal yang sama pada mode tty mode apa pun.

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

... mungkin melakukan pekerjaan itu.

mikeserv
sumber
1
Anda membaca dari dan menulis ke file yang sama, apakah ini tidak menyebabkan masalah
iruvar
@ 1_CR Saya membaca dari |pipefile. Benar, file tmp perantara akan lebih kuat - tetapi buffer dalam pipa harus cukup. Namun, jika tidak, tr -d '\r' <<FILE >./file\n$(cat ./file)\nFILE\nakan menjadi hal yang pasti - asalkan file tersebut tidak mengandung \000karakter, yaitu.
mikeserv
Ini kemungkinan besar akan dihapus ./filesebelum catmemiliki kesempatan untuk membacanya. Semua perintah pipa diluncurkan secara paralel dan pengalihan diproses oleh shell sebelum perintah yang terpengaruh dijalankan.
jlliagre
@mikeserv $(cat)memperbaiki fix yang mengandung heredoc : atau (signifikan) mengekstrasi baris kosong atau baris terakhir yang tidak termotivasi, atau lebih banyak data daripada kesesuaian dalam memori yang tersedia. (rm file; tr -d '\r' >file) <filehindari itu, jika membuat ulang file tidak apa-apa (mengatur ulang pemilik / grup / izin / ACL / konteks / dll)
dave_thompson_085