`^ M` কী এবং আমি কীভাবে এ থেকে মুক্তি পাব?


134

আমি যখন ফাইলটি খুলি তখন আমি vimঅদ্ভুত ^Mচরিত্রগুলি দেখছি ।

দুর্ভাগ্যক্রমে, বিশ্বের পছন্দের সার্চ ইঞ্জিন অনুসন্ধানগুলিতে বিশেষ অক্ষরের সাথে ভাল করে না, তাই আমি এখানে জিজ্ঞাসা করছি:

  • এই ^Mচরিত্রটি কী ?

  • কিভাবে এটি সেখানে পেতে পারে?

  • কিভাবে আমি তা পরিত্রাণ পেতে পারি?


3
ভ্লাসটিমিল এটি একটি অর্থহীন সম্পাদনা ছিল। ব্রিটিশ ইংরাজীতে পড়ার উপযুক্ত অতীত কাল।
জেসি_বি

1
এটা একটা নিয়ন্ত্রণ চরিত্র digraph, আরও তথ্যের জন্য আছে: help digraph-table
এরিক লেসচিনস্কি

উত্তর:


107

^Mএকটি ঘোড়ার গাড়ি রিটার্ন চরিত্র। আপনি যদি এটি দেখেন তবে সম্ভবত আপনি ডস / উইন্ডোজ বিশ্বে উত্পন্ন এমন কোনও ফাইলটির দিকে তাকিয়ে আছেন যেখানে একটি লাইনটি শেষের দিকে একটি ক্যারেজ রিটার্ন / নিউলাইন জোড় দ্বারা চিহ্নিত করা হয়েছে, যেখানে ইউনিক্স বিশ্বে, শেষের-লাইনের একটি একক নিউলাইন দ্বারা চিহ্নিত করা হয়েছে।

আরও নিবন্ধের জন্য এই নিবন্ধটি পড়ুন , এবং নিউলাইনের জন্য উইকিপিডিয়া এন্ট্রি ।

এই নিবন্ধটি বিভিন্ন শেষ-লাইন চিহ্নিতকারীগুলির সাথে স্বচ্ছভাবে ফাইলগুলি সম্পাদনা করার জন্য কীভাবে ভিএম সেট আপ করবেন তা আলোচনা করে।

^Mকিছু লাইনের শেষে যদি আপনার কাছে ফাইল থাকে এবং আপনি সেগুলি থেকে মুক্তি পেতে চান তবে এটি ভিমে ব্যবহার করুন:

:s/^M$//

(প্রেস Ctrl+ + V Ctrl+ + Mযে সন্নিবেশ করতে ^M।)


11
ব্যবহার করে দেখুন :%s/^M/\r/gপরিবর্তে মুছে ফেলার জন্য ^Mএবং প্রতিস্থাপন ^Mnewline অক্ষর সঙ্গে \r। ছাড়া %, কমান্ডটি কেবল বর্তমান লাইনের জন্য প্রযোজ্য। এবং আমি এমন কয়েকটি উদাহরণ পেয়েছি যেখানে ^Mলাইনের শেষ নেই, যেমনThe first line.^MThe second line.
জর্জ

অথবা আপনি যদি বোঝাতে চান না যে লাইন ব্রেকগুলি কেবল আপনিই করতে পারেন:%s/^M/
সাবধান 1

2
যদি এটি নিজে থেকে কেবল একটি গাড়ী ফেরত আসে তবে এটি ক্লাসিক (প্রাক-ইউনিক্স) ম্যাকিনটোস লাইন ব্রেক হতে পারে। এমনকি ম্যাকের জন্য এক্সেল 2007 এর মতো কিছু নতুন প্রোগ্রাম কোনও কারণে এটি করে।
sudo

@ অ্যালার্কস কিন্তু ওয়েট্যাপ.কাজ / স্যালামান্ডার / শেল্প / স্যালাম্যান্ড / অ্যাপেন্ডিক্স_টেক্সটফিলস বলেছেন যে ইউএনআইএক্স-^M তে ব্যবহৃত হয়
বিবেক

আপনি যে নিবন্ধটি সংযুক্ত করেছেন \nসেটিতে ইউনিক্সে এটি ব্যবহার করা হয়েছে যা সঠিক। এটি ASCII কোড 10, অন্যথায় হিসাবে পরিচিত ^J
লার্স্ক

39

বেশিরভাগ ইউএনআইএক্স অপারেটিং সিস্টেমের একটি ইউটিলিটি রয়েছে যা dos2unixসিআরএলএফকে এলএফতে রূপান্তরিত করে। অন্যান্য উত্তরগুলি "তারা কী" প্রশ্নটি কভার করে।


36

এটি করার একটি সহজ উপায় নিম্নলিখিত কমান্ডটি ব্যবহার করা হয়:

dos2unix filename

এই কমান্ডটি যেমন পথের নিদর্শনগুলির সাথেও কাজ করে

dos2unix path/name*

যদি এটি কাজ না করে তবে বিভিন্ন মোড ব্যবহার করে দেখুন:

dos2unix -c mac filename
  • -cরূপান্তর মোড সেট করুন। যেখানে CONVMODE এর মধ্যে একটি: ডিফল্ট হওয়ার ascii, 7bit, iso, macসাথে ascii

22

এটি আমার পক্ষে কাজ করেছে

:e ++ff=dos 

ড: ফাইল বিন্যাস জোর করে, ই: + + এফএফ = ডস কমান্ড ভিমকে আবার ফাইলটি পড়তে বলে। ভিফ প্রতিটি বাবারে কেবলমাত্র লাইনের পাঠ্য রেখে সিআরএলএফ এবং এলএফ-কেবল লাইন শেষগুলি সরিয়ে ফেলবে।

তারপর

:set ff=unix 

এবং পরিশেষে

:wq 

3
ধন্যবাদ! এটি আমার পক্ষে কাজ করেছে তবে গৃহীত সমাধানটি কার্যকর হয়নি
বোজর্কস এক নম্বর অনুরাগীর

নেই ffবিন্যাস ফাইল নির্দেশ করে? কি হবে ++ff?
কেসিএফএনএমআই

ড: ফাইল বিন্যাস জোর করে, ই: + + এফএফ = ডস কমান্ড ভিমকে আবার ফাইলটি পড়তে বলে। ভিফ প্রতিটি বাবারে কেবলমাত্র লাইনের পাঠ্য রেখে সিআরএলএফ এবং এলএফ-কেবল লাইন শেষগুলি সরিয়ে ফেলবে।
স্ট্রাইকার

10

গাড়ীর রিটার্ন থেকে মুক্তি পাওয়ার আরেকটি উপায় হ'ল trকমান্ডটি।

আমার কাছে একটি ছোট স্ক্রিপ্ট রয়েছে যা দেখতে এটির মতো

#!/bin/sh
tmpfile=$(mktemp)
tr -d '\r' <"$1" >"$tmpfile"
mv "$tmpfile" "$1"

6

আপনি এটি দিয়ে এটি পরিষ্কার করতে পারেন sed:

sed -e 's/^M$//' < infile > outfile

কৌশলটি হ'ল কীভাবে সঠিকভাবে গাড়ী-ফেরত প্রবেশ করা যায়। সাধারণত, আপনাকে C-v C-mআক্ষরিক ক্যারিজ রিটার্ন প্রবেশ করতে টাইপ করতে হবে। আপনি পাশাপাশি সেড কাজ করতে পারেন

sed -i.bak -e 's/^M$//' infile

2

এই ^ এম কি?
^ এম একটি ক্যারেজ-রিটার্ন চরিত্র। আপনি যদি এটি দেখেন তবে সম্ভবত আপনি ডস / উইন্ডোজ বিশ্বে উত্পন্ন এমন কোনও ফাইলটির দিকে তাকিয়ে আছেন যেখানে একটি লাইনটি শেষের দিকে একটি ক্যারেজ রিটার্ন / নিউলাইন জোড় দ্বারা চিহ্নিত করা হয়েছে, যেখানে ইউনিক্স বিশ্বে, শেষের-লাইনের একটি একক নিউলাইন দ্বারা চিহ্নিত করা হয়েছে।

কিভাবে এটি সেখানে পেতে পারে?
যখন ফাইল ফর্ম্যাট পরিবর্তন হয়।

কিভাবে আমি তা পরিত্রাণ পেতে পারি?
এর সাথে আপনার ফাইলটি খুলুন

vim -b FILE_PATH

নিম্নলিখিত কমান্ড দিয়ে এটি সংরক্ষণ করুন

:%s/^M//g

আপনার ফিলারটি খুলতে একটি টাইপ পেয়েছেন ।
ম্যাটিউজ পিয়োট্রোস্কি

4
এই উত্তরটি অন্য উত্তরের সাথে কিছু যুক্ত করে না। প্রথম অনুচ্ছেদটি গৃহীত উত্তর থেকে প্রায় ভারব্যাটিম অনুলিপি। প্রদত্ত কোডটি কোনও কিছুই সংরক্ষণ করবে না , কেবল সমস্ত লাইন থেকে সমস্ত ক্যারেজ রিটার্ন অক্ষর মুছে ফেলবে। এবং আমি নিশ্চিত না কীভাবে ফাইলটি বাইনারি মোডে খুললে এখানে সহায়তা করবে।
ডাবু

2

আমার ক্ষেত্রে,

উপরের কিছুই কাজ করেনি, আমার ম্যাক থেকে লিনাক্স মেশিনে আমার একটি সিএসভি ফাইল অনুলিপি করা হয়েছিল এবং আমি উপরের সমস্ত কমান্ড ব্যবহার করেছি তবে নীচের একটি ছাড়া আর কিছুই সাহায্য হয়নি

tr "\015" "\n" < inputfile > outputfile

আমার একটি ফাইল রয়েছে যাতে ^ এম অক্ষরগুলি নীচের মতো লাইনের মাঝে স্যান্ডউইচ করা ছিল

Audi,A4,35 TFSi Premium,,CAAUA4TP^MB01BNKT6TG,TRO_WBFB_500,Trico,CARS,Audi,A4,35 TFSi Premium,,CAAUA4TP^MB01BNKTG0A,TRO_WB_T500,Trico,

0

আপনি এক্স মোডে ভিম ব্যবহার করতে পারেন:

ex -bsc '%s/\r//|x' file
  1. -b বাইনারি মোড

  2. % সমস্ত লাইন নির্বাচন করুন

  3. s বিকল্প

  4. \r গাড়ি ফেরত

  5. x সংরক্ষণ করেন এবং বন্ধ করেন


0

আপনার ~ / .vimrc এ নিম্নলিখিত লাইনটি যুক্ত করুন

command! Tounix :call Preserve('1,$s/^M//')

তারপরে আপনার যখন উইন্ডোজ লাইনের সমাপ্তি সহ কোনও ফাইল থাকে, তখন ": টাউনিক্স" কমান্ডটি চালান।


-1

অতীতে, আমি দেখেছি এমনকি কনফিগারেশন ফাইলগুলি সঠিকভাবে পার্স করা হয় না এবং হোয়াইটস্পেস সম্পর্কে অভিযোগ করা হয়, তবে আপনি যদি ভি এবং সেট তালিকাটি করেন তবে এটি শ্বেত স্পেস প্রদর্শন করবে না, গ্রেপ ফাইলের নাম [[স্পেস]] আপনাকে দেখায় ^ এম

যে যখন dos2unix fileসাহায্য করে


এই উত্তরটি নতুন কিছু আনবে না, কমপক্ষে দুটি উত্তরে আরও বেশি পুরানো ইতোমধ্যে do2unix উল্লেখ করা হয়েছে।
রুই এফ রিবেইরো
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.