ডস লাইন এন্ডিংগুলিকে লিনাক্সের লাইন এন্ডিংগুলিতে ভিমে রূপান্তর করুন


716

আমি যদি উইন্ডোজে আমার তৈরি ফাইলগুলি খুলি, লাইনগুলি সমস্ত শেষ হয় ^M
আমি কীভাবে একবারে এই অক্ষরগুলি মুছব?


আপনি যদি এটি করেন hexdump -C badfileএবং দেখুন 0x0d 0x0a "\r\n"এটি আপনার সমস্যা।
ইজমির রামিরেজ

উত্তর:


1073

dos2unix একটি কমান্ড উপযোগ যে এই কি করতে হবে, অথবা :%s/^M//gআপনি ব্যবহার যদি হবে Ctrl- v Ctrl- mইনপুট ^ এম, অথবা আপনি যা করতে পারেন :set ff=unixএবং তেজ এটা আপনার জন্য কি করতে হবে।

'ফাইল ফর্ম্যাট' সেটিং-এ থাকা দস্তাবেজগুলি এখানে রয়েছে এবং ভিম উইকির লাইন শেষ রূপান্তরগুলির একটি বিস্তৃত পৃষ্ঠা রয়েছে

পর্যায়ক্রমে, আপনি যদি ফাইলগুলিকে অনেকগুলি পিছনে সরিয়ে নিয়ে যান তবে আপনি সেগুলি রূপান্তর করতে না চাইলেও এটি করতে চান :set ff=dos, তাই ভিআইএম জানতে পারবে এটি একটি ডস ফাইল এবং লাইন শেষের জন্য ডস কনভেনশন ব্যবহার করবে।


56
:%s/^M//gহওয়া উচিত :%s/\r//g, কারণ ^Mকেবল লাইনের শুরুতে "মিলের মূলধন" এম ""।
Bunyk

78
যদি আপনি উত্তরটি বলে থাকেন এবং '^ এম' ইনপুট করতে ctrl-v ctrl-m ব্যবহার করেন তবে তা নয়।
pjz

2
crtl-v কোনও ভাল নয়, উইন্ডোতে এটি ক্লিপবোর্ডের সামগ্রীগুলি কমান্ড লাইনে আটকে দেয়। সমাধান :%s/\r//gআমার পক্ষে কাজ করেছেন, @ বুনিক
চিঠিপত্রের ২

3
@ropata আপনি উইন্ডোজে যা চান তা হ'ল সিটিআরএল -কিউ
ruffin

2
আমি অবশ্যই কিছু মিস করছি, কারণ set ff=unixকিছুই করে না। হতে পারে এটি ফাইলটি রূপান্তর করে তবে সমস্ত ^Mঅক্ষর এখনও সেখানে রয়েছে।
felwithe

276

দৃশ্যে লাইনের শেষ পরিবর্তন করুন:

: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

4
আপনাকে অনেক ধন্যবাদ. আমি আমার মতো অলসতার জন্য vi + ': wq ++ ff = unix' <ফিলিপথ> চেষ্টা করেছি ile
a_secenthusiast

2
এটি সর্বাধিক উত্তোলিত উত্তর হওয়া উচিত। :w +ff=unixএখানে লিখিত অন্যান্য সামগ্রীর তুলনায় খুব সুন্দর, এবং বাশ স্ক্রিপ্টটি একটি দুর্দান্ত বোনাস।
mkasberg

:eকমান্ড আমার Windows এ কিছু করতে তেজ ইনস্টল উপস্থিত হয় না। আমার ভিউ এখনও ^Mকোডগুলি দেখায় ।
গ্রান্ট বার্চমিয়ার

160

আমি সাধারণত ব্যবহার করি

:%s/\r/\r/g

যা কিছুটা অদ্ভুত বলে মনে হচ্ছে, তবে ভিএম লাইনফিডের সাথে যেভাবে মেলে তার জন্য এটি কাজ করে। আমি মনে রাখা এটি আরও সহজ মনে করি :)


9
এটি প্ল্যাটফর্ম জুড়ে ধারাবাহিকভাবে কাজ করে। এখানে সেরা উত্তর।
thebigjc

4
আমার আগে কখনও কোনও সমস্যা হয়নি :set ff=unix, তবে আমি আজ যে ফাইলটি খোলিছিলাম তা অবশ্যই বিশেষভাবে অদ্ভুত ছিল। ভিম বলেছিল এটি ইতিমধ্যে ছিল fileformat=unixতবে সমস্ত লাইন শেষ ছিল ^M। এই সমাধানটি আমার পক্ষে কাজ করেছিল।
ক্রিস বি

15
এই সমাধানটি আমার জন্য অযাচিত অতিরিক্ত লাইন যুক্ত করে, ফাইলটির লাইন সংখ্যা দ্বিগুণ করে। :%s/\r//gপরিবর্তে আমার জন্য কাজ করে।
ভিক্টর জামামানিয়ান

3
ভিক্টর, আপনার ফাইলগুলির সম্ভবত শেষ \ r \ n হয়। \ r একটি নতুন লাইন হিসাবে পড়েনি তবে is n is যে ফাইলগুলিতে আমি চালাচ্ছি সেগুলি হ'ল and r এবং আপনাকে একটি নতুন লাইন অক্ষর যুক্ত করতে হবে।
জোয়েজিওজিওজর

2
@ ভিক্টরজামেনিয়ান :%s/\r//gহ'ল একমাত্র সাধারণ-উদ্দেশ্য সমাধান - বিশেষত ডস- এবং ইউএনআইএক্স -স্টাইল উভয় নিউলাইনের মিশ্র-মোড ফাইলগুলির একজাতীয় মিশ্রণ রয়েছে। ক্যানোনিকাল সমাধান (যেমন, :set ff=unix, :e ++ff=unix) একই সম্পর্কে newline শৈলী বর্তমান বাফার প্রান্ত প্রতিটি লাইন অনুমান। কখনও কখনও তারা করে; কখনও কখনও তারা না। কিউ স্যাফফেস।
সিসিল কারি

97

আমি নিম্নলিখিত কমান্ডটি ব্যবহার করতে পছন্দ করি:

:set fileformat=unix

আপনি নিজের ফাইলটিকে যথাক্রমে ম্যাকিনটোস বা এমএস-ডস / এমএস-উইন্ডোজ ফাইল কনভেনশনে রূপান্তর করতে macবা ব্যবহার করতে পারেন dos। ফাইলটি ইতিমধ্যে সঠিক ফর্ম্যাটে থাকলে এটি কিছুই করে না।

আরও তথ্যের জন্য, ভিম সহায়তা দেখুন:

:help fileformat

1
এই কমান্ডটি আমার উইন্ডোজ ভিমে কিছু করতে উপস্থিত হবে না। আমার দৃষ্টিভঙ্গিতে এখনও এতে ^Mঅক্ষর রয়েছে।
গ্রান্ট বার্চমিয়ার

set fileformat=unixআমার .vimrc ফাইলটিতে যুক্ত করার কাজ হয়েছে।
জোয় অ্যালেন

20

:set fileformat=unix ডস থেকে ইউনিক্সে রূপান্তর করতে।


1
এটি আসলে আমার জন্য সমস্যাটি সমাধান করেছে। অনুসন্ধান করার সময় আমি এই চরিত্রগুলি খুঁজে পেতে সক্ষম হইনি।
ক্যাপ্টেন ইনসানোও

20
:%s/\r+//g

ভিমে, এটি সমস্ত গাড়ি ফেরত দেয় এবং কেবল নতুন লাইন ছেড়ে যায়।


2
উপরের কিছু কারণে উইন্ডোজ জিভিআইএমের নীচে আমার পক্ষে কাজ হয়নি। কিন্তু যখন :%s/\r//gএটি পরিবর্তিত হয়ে একটি কবজ মত কাজ করে।
soltysh

1
@ সোলটিশ:% s / \ r \ + $ // জি
চিন্তাবিদ 3

14

থেকে: http://vim.wikia.com/wiki/Change_end-of-line_format_for_dos-mac-unix

[এসএসসি]:% s / \ r $ //


অফিসিয়াল ডক সাইটের দিকে নির্দেশ করার জন্য +1। উপরের লিঙ্কটি যে কেউ ব্যবহার করছেন তার জন্য, সেই পৃষ্ঠায় "বর্তমান ফাইলটি রূপান্তর করা" বিভাগটি দেখুন।
টিন ম্যান

এই + ভিম-বি <
ফাইলিনাম> কবজটির

10

ফাইলগুলি ডিরেক্টরি থেকে ইউনিক্সে রূপান্তর করুন

কমান্ড লাইন এবং সেড ব্যবহার করে, "ডিরেক্টরি" এক্সটেনশন সহ বর্তমান ডিরেক্টরিতে সমস্ত ফাইল সন্ধান করুন এবং সমস্ত "^ এম" মুছে ফেলুন

@ 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(কেবল ক্যারেট "^" চিহ্ন এবং এম টাইপ করবেন না)


9

dos2unix ফাইলের সামগ্রীগুলি সরাসরি সংশোধন করতে পারে।

অস্থায়ী ফাইল পুনঃনির্দেশের কোনও প্রয়োজন ছাড়াই আপনি সরাসরি ফাইলটিতে এটি ব্যবহার করতে পারেন।

dos2unix input.txt input.txt

উপরেরটি ধরে নেওয়া মার্কিন কীবোর্ড ব্যবহার করে। -ইউকে কীবোর্ড ব্যবহার করতে 437 বিকল্পটি ব্যবহার করুন।

dos2unix -437 input.txt input.txt


6

নিম্নলিখিত পদক্ষেপগুলি ডসগুলির জন্য ফাইলের বিন্যাসটিকে ইউনিক্সে রূপান্তর করতে পারে:

: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


6

নিম্নলিখিত কমান্ড সহ:

:%s/^M$//g 

পান ^Mটাইপ প্রদর্শিত CtrlVতারপর CtrlMCtrlVভিমকে পরবর্তী অক্ষরটি আক্ষরিকভাবে প্রবেশ করতে বলেছে tells


6

Appear এমটি হাজির হওয়ার বিষয়ে মন্তব্যটি আমার পক্ষে কাজ করেছে। আমার ভিতে কেবল "^ এম" টাইপ করলে কিছুই পাওয়া যায় নি (পাওয়া যায়নি)। CTRL+ + V CTRL+ + Mক্রম পুরোপুরি যদিও এটা করেনি।

আমার ওয়ার্কিং সাবস্টিটিউশন কমান্ড ছিল

:%s/Ctrl-V Ctrl-M/\r/g

এবং এটি আমার পর্দায় এমন দেখাচ্ছে:

:%s/^M/\r/g

4
আপনি এর :%sপরিবর্তে ব্যবহার করতে পারেন :1,$s%জন্য সাধারণভাবে সংক্ষেপে হয় 1,$
টিন ম্যান

5

আমি খুব সহজ উপায় খুঁজে পেয়েছি: ন্যানো দিয়ে ফাইলটি খুলুন: nano file.txt

সংরক্ষণ করতে CTRL+ টিপুন O, তবে টিপে দেওয়ার আগে Enter, টিপুন: ALT+ Dবেটউইন ডস এবং ইউনিক্স / লিনাক্স লাইন- এন্ডিংগুলিতে টগল করতে , বা: ALT+ Mটগল করতে বেটউইন ম্যাক এবং ইউনিক্স / লিনাক্স লাইন-এন্ডিংস Enterসংরক্ষণ করুন এবং তারপরে CTRL+ চাপুন X


এটি একটি লিনাক্স সার্ভারে করা হয়েছে, ফাইলটির ^Mশেষ ছিল । রাখতে ডস হিসাবে সংরক্ষণ করুন, অপসারণ করার জন্য লিনাক্স হিসাবে সংরক্ষণ করুন। ব্যবহার করে চেক করতে পারেনcat -v
হ্যাটট্রিকএনজেড 11:58

এই প্রশ্নটি ন্যানো নয়, ভিম সম্পর্কিত।
গ্রান্ট বার্চমিয়ার

5
:g/Ctrl-v Ctrl-m/s///

CtrlMচরিত্র \r, বা ক্যারেজ রিটার্ন, যা ডস লাইন শেষ করে। কমান্ড লাইনে CtrlVআক্ষরিক CtrlMঅক্ষর সন্নিবেশ করতে ভিমকে বলে ।

সামগ্রিকভাবে নেওয়া, এই কমান্ডটি \rকিছু না দিয়ে সমস্তকে প্রতিস্থাপন করে , এগুলি লাইনের শেষ থেকে সরিয়ে দেয়।



3

আপনি নিম্নলিখিত কমান্ডটি ব্যবহার করতে পারেন:
:%s/^V^M//g
যেখানে '^' এর অর্থ CTRLকী ব্যবহার করুন ।


2

বর্তমান ডিরেক্টরিতে সমস্ত .sh ফাইল পুনরায় ফর্ম্যাট করার জন্য নীচের কমান্ডটি ব্যবহৃত হয়, আমি এটি আমার ফেডোরা ওএসে পরীক্ষা করেছি।

for file in *.sh; do awk '{ sub("\r$", ""); print }' $file >luxubutmp; cp -f luxubutmp $file; rm -f luxubutmp ;done

2

ভিমে, টাইপ করুন:

:w !dos2unix %

এটি আপনার বর্তমান বাফারের সামগ্রীগুলি ডস 2 ইউনিক্স কমান্ডে পাইপ করবে এবং বর্তমান সামগ্রীতে ফলাফল লিখবে। ভিম পরে ফাইলটি পুনরায় লোড করতে বলবে


2

সরাসরি লিনাক্স কনসোলে চালাতে: vim file.txt +"set ff=unix" +wq


1

সাধারণত এটির জন্য আপনি একটি 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}";
}

1

আমি জানতাম আমি এটি কোথাও দেখেছি। এখানে ফ্রিবিএসডি লগইন টিপ:

ডস ফাইল থেকে সমস্ত ^ এম অক্ষর মুছে ফেলা দরকার? চেষ্টা

tr -d \\r < dosfile > newfile
    -- Originally by Dru <genesis@istar.ca>

0

যদিও এই বিষয়টি খুব পুরানো, আমি উইকিয়া থেকে অন্য জিনিসটি রাখতে চাই:

%s/\r\+$//g

এটি পূরণ করে লাইনের শেষ পর্যন্ত সমস্ত ক্যারেজ রিটার্ন লক্ষণ (এক এবং একাধিক reps) খুঁজে এবং মুছুন, তাই ঠিক \nইওল এ থাকবেন।


0

এটা আমার পথ. আমি ডস ইওএল-তে একটি ফাইল খুললাম এবং যখন আমি ফাইলটি সংরক্ষণ করি যা স্বয়ংক্রিয়ভাবে ইউনিক্স ইওলিতে রূপান্তরিত হয়

autocmd BufWrite * :set ff=unix

0

আপনি যদি উইন্ডোতে নোটপ্যাড বা নোটপ্যাড ++ এ একটি ফাইল তৈরি করেন এবং এটি লিনাক্সে আনেন এবং এটি ভিএম দিয়ে খোলেন, আপনি প্রতিটি লাইনের শেষে ^ এম দেখতে পাবেন। এটি অপসারণ করতে,

আপনার লিনাক্স টার্মিনালে, টাইপ করুন

ডস 2 ইউনিক্স ফাইলের নাম

এটি প্রয়োজনীয় যাদু করবে।


0

আমি মাইলসের জায়গায় নতুন লাইন চাইছিলাম। উদ্ধারের জন্য পার্ল:

perl -pi.bak -e 's/\x0d/\n/g' excel_created.txt

বা stdout লিখতে:

perl -p -e 's/\x0d/\n/g' < excel_created.txt
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.