আমি যদি উইন্ডোজে আমার তৈরি ফাইলগুলি খুলি, লাইনগুলি সমস্ত শেষ হয় ^M
।
আমি কীভাবে একবারে এই অক্ষরগুলি মুছব?
আমি যদি উইন্ডোজে আমার তৈরি ফাইলগুলি খুলি, লাইনগুলি সমস্ত শেষ হয় ^M
।
আমি কীভাবে একবারে এই অক্ষরগুলি মুছব?
উত্তর:
dos2unix একটি কমান্ড উপযোগ যে এই কি করতে হবে, অথবা :%s/^M//g
আপনি ব্যবহার যদি হবে Ctrl- v Ctrl- mইনপুট ^ এম, অথবা আপনি যা করতে পারেন :set ff=unix
এবং তেজ এটা আপনার জন্য কি করতে হবে।
'ফাইল ফর্ম্যাট' সেটিং-এ থাকা দস্তাবেজগুলি এখানে রয়েছে এবং ভিম উইকির লাইন শেষ রূপান্তরগুলির একটি বিস্তৃত পৃষ্ঠা রয়েছে ।
পর্যায়ক্রমে, আপনি যদি ফাইলগুলিকে অনেকগুলি পিছনে সরিয়ে নিয়ে যান তবে আপনি সেগুলি রূপান্তর করতে না চাইলেও এটি করতে চান :set ff=dos
, তাই ভিআইএম জানতে পারবে এটি একটি ডস ফাইল এবং লাইন শেষের জন্য ডস কনভেনশন ব্যবহার করবে।
:%s/^M//g
হওয়া উচিত :%s/\r//g
, কারণ ^M
কেবল লাইনের শুরুতে "মিলের মূলধন" এম ""।
:%s/\r//g
আমার পক্ষে কাজ করেছেন, @ বুনিক
set ff=unix
কিছুই করে না। হতে পারে এটি ফাইলটি রূপান্তর করে তবে সমস্ত ^M
অক্ষর এখনও সেখানে রয়েছে।
দৃশ্যে লাইনের শেষ পরিবর্তন করুন:
:e ++ff=dos
:e ++ff=mac
:e ++ff=unix
এটি সংরক্ষণ অপারেশন হিসাবেও ব্যবহার করা যেতে পারে (: ডাব্লু একা আপনি স্ক্রিনে দেখেন এমন লাইন শেষ ব্যবহার করে সংরক্ষণ করবে না):
:w ++ff=dos
:w ++ff=mac
:w ++ff=unix
এবং আপনি এটি কমান্ড-লাইন থেকে ব্যবহার করতে পারেন:
for file in *.cpp
do
vi +':w ++ff=unix' +':q' "$file"
done
:w +ff=unix
এখানে লিখিত অন্যান্য সামগ্রীর তুলনায় খুব সুন্দর, এবং বাশ স্ক্রিপ্টটি একটি দুর্দান্ত বোনাস।
:e
কমান্ড আমার Windows এ কিছু করতে তেজ ইনস্টল উপস্থিত হয় না। আমার ভিউ এখনও ^M
কোডগুলি দেখায় ।
আমি সাধারণত ব্যবহার করি
:%s/\r/\r/g
যা কিছুটা অদ্ভুত বলে মনে হচ্ছে, তবে ভিএম লাইনফিডের সাথে যেভাবে মেলে তার জন্য এটি কাজ করে। আমি মনে রাখা এটি আরও সহজ মনে করি :)
:set ff=unix
, তবে আমি আজ যে ফাইলটি খোলিছিলাম তা অবশ্যই বিশেষভাবে অদ্ভুত ছিল। ভিম বলেছিল এটি ইতিমধ্যে ছিল fileformat=unix
তবে সমস্ত লাইন শেষ ছিল ^M
। এই সমাধানটি আমার পক্ষে কাজ করেছিল।
:%s/\r//g
পরিবর্তে আমার জন্য কাজ করে।
:%s/\r//g
হ'ল একমাত্র সাধারণ-উদ্দেশ্য সমাধান - বিশেষত ডস- এবং ইউএনআইএক্স -স্টাইল উভয় নিউলাইনের মিশ্র-মোড ফাইলগুলির একজাতীয় মিশ্রণ রয়েছে। ক্যানোনিকাল সমাধান (যেমন, :set ff=unix
, :e ++ff=unix
) একই সম্পর্কে newline শৈলী বর্তমান বাফার প্রান্ত প্রতিটি লাইন অনুমান। কখনও কখনও তারা করে; কখনও কখনও তারা না। কিউ স্যাফফেস।
আমি নিম্নলিখিত কমান্ডটি ব্যবহার করতে পছন্দ করি:
:set fileformat=unix
আপনি নিজের ফাইলটিকে যথাক্রমে ম্যাকিনটোস বা এমএস-ডস / এমএস-উইন্ডোজ ফাইল কনভেনশনে রূপান্তর করতে mac
বা ব্যবহার করতে পারেন dos
। ফাইলটি ইতিমধ্যে সঠিক ফর্ম্যাটে থাকলে এটি কিছুই করে না।
আরও তথ্যের জন্য, ভিম সহায়তা দেখুন:
:help fileformat
^M
অক্ষর রয়েছে।
set fileformat=unix
আমার .vimrc ফাইলটিতে যুক্ত করার কাজ হয়েছে।
:set fileformat=unix
ডস থেকে ইউনিক্সে রূপান্তর করতে।
:%s/\r+//g
ভিমে, এটি সমস্ত গাড়ি ফেরত দেয় এবং কেবল নতুন লাইন ছেড়ে যায়।
:%s/\r//g
এটি পরিবর্তিত হয়ে একটি কবজ মত কাজ করে।
থেকে: http://vim.wikia.com/wiki/Change_end-of-line_format_for_dos-mac-unix
[এসএসসি]:% s / \ r $ //
@ https://gist.github.com/sparkida/7773170
find $(pwd) -type f -name "*.ext" | while read file; do sed -e 's/^M//g' -i "$file"; done;
এছাড়াও, উপরে উল্লিখিত হিসাবে ^ এম = Ctrl+V+ Ctrl+M(কেবল ক্যারেট "^" চিহ্ন এবং এম টাইপ করবেন না)
dos2unix
ফাইলের সামগ্রীগুলি সরাসরি সংশোধন করতে পারে।
অস্থায়ী ফাইল পুনঃনির্দেশের কোনও প্রয়োজন ছাড়াই আপনি সরাসরি ফাইলটিতে এটি ব্যবহার করতে পারেন।
dos2unix input.txt input.txt
উপরেরটি ধরে নেওয়া মার্কিন কীবোর্ড ব্যবহার করে। -
ইউকে কীবোর্ড ব্যবহার করতে 437 বিকল্পটি ব্যবহার করুন।
dos2unix -437 input.txt input.txt
tr -d '\15\32' < winfile.txt > unixfile.txt
(দেখুন: http://kb.iu.edu/data/acux.html )
নিম্নলিখিত পদক্ষেপগুলি ডসগুলির জন্য ফাইলের বিন্যাসটিকে ইউনিক্সে রূপান্তর করতে পারে:
:e ++ff=dos Edit file again, using dos file format ('fileformats' is ignored).[A 1]
:setlocal ff=unix This buffer will use LF-only line endings when written.[A 2]
:w Write buffer using unix (LF-only) line endings.
তথ্যসূত্র: http://vim.wikia.com/wiki/Change_end-of-line_format_for_dos-mac-unix
Appear এমটি হাজির হওয়ার বিষয়ে মন্তব্যটি আমার পক্ষে কাজ করেছে। আমার ভিতে কেবল "^ এম" টাইপ করলে কিছুই পাওয়া যায় নি (পাওয়া যায়নি)। CTRL+ + V CTRL+ + Mক্রম পুরোপুরি যদিও এটা করেনি।
আমার ওয়ার্কিং সাবস্টিটিউশন কমান্ড ছিল
:%s/Ctrl-V Ctrl-M/\r/g
এবং এটি আমার পর্দায় এমন দেখাচ্ছে:
:%s/^M/\r/g
:%s
পরিবর্তে ব্যবহার করতে পারেন :1,$s
। %
জন্য সাধারণভাবে সংক্ষেপে হয় 1,$
।
আমি খুব সহজ উপায় খুঁজে পেয়েছি: ন্যানো দিয়ে ফাইলটি খুলুন: nano file.txt
সংরক্ষণ করতে CTRL+ টিপুন O, তবে টিপে দেওয়ার আগে Enter, টিপুন: ALT+ Dবেটউইন ডস এবং ইউনিক্স / লিনাক্স লাইন- এন্ডিংগুলিতে টগল করতে , বা: ALT+ Mটগল করতে বেটউইন ম্যাক এবং ইউনিক্স / লিনাক্স লাইন-এন্ডিংস Enterসংরক্ষণ করুন এবং তারপরে CTRL+ চাপুন X।
^M
শেষ ছিল । রাখতে ডস হিসাবে সংরক্ষণ করুন, অপসারণ করার জন্য লিনাক্স হিসাবে সংরক্ষণ করুন। ব্যবহার করে চেক করতে পারেনcat -v
তুমি ব্যবহার করতে পার:
vim somefile.txt +"%s/\r/\r/g" +wq
বা dos2unix utility
।
ভিমে, টাইপ করুন:
:w !dos2unix %
এটি আপনার বর্তমান বাফারের সামগ্রীগুলি ডস 2 ইউনিক্স কমান্ডে পাইপ করবে এবং বর্তমান সামগ্রীতে ফলাফল লিখবে। ভিম পরে ফাইলটি পুনরায় লোড করতে বলবে
সাধারণত এটির জন্য আপনি একটি dos2unix
কমান্ড ব্যবহার করতে পারেন, এটি নিশ্চিত করুন যে আপনি ম্যানুয়ালটি পড়েছেন কারণ GNU এবং BSD সংস্করণগুলি কীভাবে আর্গুমেন্টের সাথে তার আচরণ করে তার মধ্যে পৃথক।
বিএসডি সংস্করণ:
dos2unix $FILENAME $FILENAME_OUT
mv $FILENAME_OUT $FILENAME
জিএনইউ সংস্করণ:
dos2unix $FILENAME
বিকল্পভাবে, আপনি dos2unix
এখানে প্রস্তাবিত যে কোনও উত্তর দিয়ে নিজের তৈরি করতে পারেন , উদাহরণস্বরূপ:
function dos2unix(){
[ "${!}" ] && [ -f "{$1}" ] || return 1;
{ echo ':set ff=unix';
echo ':wq';
} | vim "${1}";
}
আমি জানতাম আমি এটি কোথাও দেখেছি। এখানে ফ্রিবিএসডি লগইন টিপ:
ডস ফাইল থেকে সমস্ত ^ এম অক্ষর মুছে ফেলা দরকার? চেষ্টা
tr -d \\r < dosfile > newfile
-- Originally by Dru <genesis@istar.ca>
এটা আমার পথ. আমি ডস ইওএল-তে একটি ফাইল খুললাম এবং যখন আমি ফাইলটি সংরক্ষণ করি যা স্বয়ংক্রিয়ভাবে ইউনিক্স ইওলিতে রূপান্তরিত হয়
autocmd BufWrite * :set ff=unix
আপনি যদি উইন্ডোতে নোটপ্যাড বা নোটপ্যাড ++ এ একটি ফাইল তৈরি করেন এবং এটি লিনাক্সে আনেন এবং এটি ভিএম দিয়ে খোলেন, আপনি প্রতিটি লাইনের শেষে ^ এম দেখতে পাবেন। এটি অপসারণ করতে,
আপনার লিনাক্স টার্মিনালে, টাইপ করুন
ডস 2 ইউনিক্স ফাইলের নাম
এটি প্রয়োজনীয় যাদু করবে।
আমি মাইলসের জায়গায় নতুন লাইন চাইছিলাম। উদ্ধারের জন্য পার্ল:
perl -pi.bak -e 's/\x0d/\n/g' excel_created.txt
বা stdout লিখতে:
perl -p -e 's/\x0d/\n/g' < excel_created.txt
hexdump -C badfile
এবং দেখুন0x0d 0x0a
"\r\n"
এটি আপনার সমস্যা।