อักขระ ^ M เรียกว่าอะไร


48

TexPad กำลังสร้างมัน ฉันรู้ว่ามันอยู่ภายใต้กำหนดเวลาบางส่วน ฉันจำไม่ได้ว่ามันคือชื่อ

ตัวละครสีน้ำเงิน:

ป้อนคำอธิบายรูปภาพที่นี่

ฉันแค่ต้องการเอาออกเป็นจำนวนมากจากเอกสารของฉัน

คุณพิมพ์มันได้อย่างไร


1
ที่เกี่ยวข้อง: ทำไมอักขระพิเศษเช่น“ carriage return” แสดงเป็น“ ^ M” เกี่ยวกับ Super User
CVn

คำตอบ:


53

มันเป็นที่รู้จักในฐานะสายการบินกลับ

หากคุณกำลังใช้vimคุณสามารถเข้าสู่โหมดแทรกและประเภทCTRL- -v CTRL mนั่น^ Mเป็นเทียบเท่าแป้นพิมพ์ได้ \ r

การแทรก0x0Dตัวแก้ไข hex จะทำงาน

วิธีการลบ

perl -p -i -e "s/\r//g" filenameคุณสามารถลบได้โดยใช้คำสั่ง

ตามที่ OP แนะนำในความคิดเห็นของคำตอบนี้ที่นี่คุณสามารถลองdos2unix filenameและดูว่าแก้ไขได้หรือไม่

ในฐานะที่เป็น @steeldriver แสดงให้เห็นในความคิดเห็นที่หลังจากเปิดตัวแก้ไขเสียงเรียกเข้าให้กดคีย์และประเภทesc:set ff=unix

อ้างอิง

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

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

-ksh: Revenue_ext.ksh: ไม่พบ [ไม่มีไฟล์หรือไดเรกทอรี]


3
มันอาจจะคุ้มค่าที่จะพูดถึง vi / vim :set ff=unixเช่นกัน
steeldriver

@steeldriver เสร็จแล้ว :)
Ramesh

ขอบคุณ @Ramesh ฉันไม่รู้ว่าจะทำอย่างไรกับรหัสแป้นพิมพ์เหล่านั้น คุณเป็นคนดี
mikeserv

1
@mikeserv ใช้คีย์ <kbd> </kbd> เพื่อใช้สัญลักษณ์แป้นพิมพ์ :)
Ramesh

2
+1 สำหรับการตอบคำถามจริง "เรียกว่าอะไร"
andrew lorien

6

รหัส

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

ในขณะที่พิมพ์ในคำสั่งไม่ได้ใช้^M คุณควรใช้shift+6 & Mctrl+v+m


1
ยินดีต้อนรับสู่ Unix Stackexchange! โปรดทราบวิธีการจัดรูปแบบเนื้อหาสำหรับรหัส ไม่จำเป็นต้องขอบคุณและคนอื่น ๆ ในที่สุด
LéoLéopold Hertz 준영


-1

ในฐานะที่เป็น Ramesh notes, CTRL+ V CTRL+ Mควรให้คุณได้รับตัวอักษรที่แท้จริง - แม้ว่าคุณจะไม่ได้ จำกัด เพียงแค่การทำเช่นนี้เท่านั้นvim- คุณควรจะสามารถทำสิ่งเดียวกันในโหมดโหมดมาตรฐานใด ๆ

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

... อาจทำงานได้


1
คุณกำลังอ่านและเขียนไปยังไฟล์เดียวกันสิ่งนี้จะไม่ทำให้เกิดปัญหา
iruvar

@ 1_CR ฉันกำลังอ่านจาก|pipeไฟล์ ความจริงไฟล์ tmp ระดับกลางจะมีประสิทธิภาพมากกว่า - แต่บัฟเฟอร์ในไพพ์ควรจะเพียงพอ แต่ถึงกระนั้นในกรณีที่มันไม่tr -d '\r' <<FILE >./file\n$(cat ./file)\nFILE\nได้เป็นสิ่งที่แน่นอน - หากไฟล์ไม่มี\000ตัวอักษรนั่นคือ
mikeserv

สิ่งนี้จะลบมากกว่า./fileที่catเคยเป็นมาก่อนที่จะมีโอกาสอ่าน คำสั่งทั้งหมดของไพพ์ไลน์ถูกเรียกใช้ในแบบขนานและเชลล์จะถูกประมวลผลก่อนประมวลผลคำสั่งที่ได้รับผลกระทบ
jlliagre

@mikeserv เป็น heredoc-containing- $(cat)fix: หรือ (สำคัญ) ต่อท้ายบรรทัดว่างเปล่าหรือบรรทัดสุดท้ายที่ไม่ถูกทำลายหรือมีข้อมูลมากกว่าที่เหมาะกับหน่วยความจำที่มีอยู่ (rm file; tr -d '\r' >file) <fileหลีกเลี่ยงสิ่งเหล่านี้หากสร้างไฟล์ใหม่ไม่เป็นไร (รีเซ็ตเจ้าของ / กลุ่ม / permbits / ACL / บริบท / ฯลฯ )
dave_thompson_085
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.