grep ধারণকারী ফাইল খুঁজে পেতে grep [এম (উইন্ডোজ ক্যারেজ রিটার্ন)


65

আমি লিনাক্স ব্যবহার করি। হাজারখানেক কনফিগারেশন ফাইলগুলিতে লুকানো একটি Pesky ^ M (উইন্ডোজ ক্যারেজ রিটার্ন) লুকানো আছে, এবং আমাকে এটি সন্ধান করতে হবে, কারণ এটি সার্ভারকে ব্যর্থ করে তোলে।

আমি কিভাবে একটি ডিরেক্টরি ডিরেক্টরির মধ্যে সম্পূর্ণরূপে কনফিগারেশন ফাইলের মধ্যে খুঁজে পেতে পারি?

আমি মনে করি আমি bash কমান্ড লাইন এ ^ এম লিখতে পারছি না। কিন্তু আমি এটি একটি টেক্সট ফাইল যা আমি m.txt বলা আছে



জানালা হবে ^ এম ^ জে
barlop

1
"আমি ব্যাশ কমান্ড লাইনে ^ এম লিখতে পারছি না"। হ্যা, তুমি পারো. কন্ট্রোল-ভি কন্ট্রোল-এম চেষ্টা করুন
Hennes

উত্তর:


85
grep -r $'\r' *

ব্যবহার -r recursive অনুসন্ধান এবং জন্য $'' Bash-c-শৈলী অব্যাহতি জন্য।

আরো, যদি আপনি নিশ্চিত এটি টেক্সট ফাইল, তাহলে এটি চালানো নিরাপদ হওয়া উচিত

tr -d $'\r' < filename

সব মুছে ফেলার জন্য \r একটি ফাইল।

যদি জিএনইউ ব্যবহার করেন sed, -i ইন-স্পেস সম্পাদনা সম্পাদন করতে পারে, তাই আপনাকে আবার লিখতে হবে না:

sed $'s/\r//' -i filename

8
@ নিকোলাস: আপনি ^ ^ ^ এম টিপে কমান্ড লাইনে ^ ^ এমটি প্রবেশ করতে পারেন তবে এটি ব্যবহার করা ভাল $'\r'
Dennis Williamson

গ্রেট, এটা কাজ করে! ^ ভি ^ এম ট্রিক্সের জন্য ধন্যবাদ :-)
Nicolas Raoul

5
সিগুইন-এর অধীনে এই কাজটি করার জন্য -U প্রয়োজন। এবং -না আপনাকে লাইন নম্বরটি বলবে: grep -r -U -n -e $ '\ r'
Rainer Blome

3
ফাইলের নামগুলি দেখতে grep কমান্ডে একটি -l যোগ করুন। অন্যথায় আপনি মিলিত লাইন সঙ্গে bombarded হতে পারে।
Brendan Byrd

1
@ আপ্রেগো আপনি এখন বুঝতে পারছেন কিনা তা নিশ্চিত না, কিন্তু Fyi এবং অন্যান্য, অনুসন্ধান $' manpage প্রথম আঘাত পড়া bash(1)মূলত, আপনি এটি দেখতে পারেন যেমন আপনি সি আক্ষরিক স্ট্রিং লেখেন। জন্য command < filename, এর ব্যবহার < অথবা > বলা হয় ফেরৎ , প্রথমবার আমি কাউকে এটি দেখেছি দেখেছি বৃহত্তর অভিব্যক্তি । অনুসন্ধান REDIRECTION মধ্যে bash(1)
livibetter

12

যখন আমি চেষ্টা করেছিলাম, আমি বলতে পারতাম যে এটি সাজানোর কাজ ছিল, কিন্তু লাইনগুলি খালি মুদ্রণ ছিল। বিকল্প যোগ করুন:

--color=never

যদি আপনি এই সমস্যাটি পান তবে আমি মনে করি এটি হাইলাইট রঙের হাইলাইটিং এর জন্য হস্তক্ষেপের অক্ষর \r অক্ষর।


2

আপনার সার্ভারের ব্যাশ শেল না থাকলে, বিকল্পটি ব্যবহার করা হয় -f বিকল্প grep, একটি প্রস্তুত ফাইল ধারণকারী সমন্বয় \r

ফাইল তৈরি করতে:

$ echo -ne '\r' > /tmp/cr                    --or--                   $ printf '\r' > /tmp/cr

$ od -c /tmp/cr
0000000  \r
0000001

আসলে অনুসন্ধান করতে

$ grep -f /tmp/cr *.html *.php *.asp *.whatever

অথবা আপনি একটু অলস হতে পারে এবং শুধু * টাইপ করুন,

$ grep -f /tmp/cr *

দ্য -f ফাইলের নাম বিকল্প grep লাইন প্রতি এক মিলান নিদর্শন ধারণকারী একটি ফাইল উল্লেখ করতে ব্যবহৃত হয়। এই ক্ষেত্রে শুধুমাত্র একটি প্যাটার্ন আছে।


1

অফ-অফ-লাইন অক্ষরগুলিতে grep ব্যবহার করার জন্য, আমার মনে হয় আপনি grep কে ফাইলটি বাইনারি বলে জানাতে হবে।

-ল (চিঠি এল) শুধুমাত্র ফাইলের নাম মুদ্রণের জন্য

-P পার্ল রেজেক্সের জন্য (তাই \ x0d \ r বা ^ M তে রূপান্তরিত হয়)

grep -l --binary -P '\x0d' *

0

আপনি একটি ম্যাক এবং ব্যবহার করা হয় homebrew , আপনি করতে পারেন:

brew install tofrodos
fromdos file.txt

থেকে সব উইন্ডোজ ক্যারিয়ার আয় মুছে ফেলুন file.txt যাও

উইন্ডোজ ক্যারিয়ার আয় ফিরে সুইচ করতে,

todos file.txt

ফোল্ডারে অনুসন্ধান এবং ডস থেকে আসা সকল ফাইল সাফ করার জন্য, এই কমান্ডটি চালান: find। টাইপ f -name "* .java" | Xargs থেকে
Taiko

0

নিয়মিত অভিব্যক্তি শৈলী, বিভিন্ন নতুন লাইন:

উইন্ডোজ (সিআর এলএফ)
\r\n

ইউনিক্স (এলএফ)
\n

যেহেতু \r\n ক্রম মোটামুটি অনন্য, আমি মনে করি আপনি যে ভাবে এটি অনুসন্ধান করতে সক্ষম হওয়া উচিত?

জিনিসগুলিকে আরও খারাপ করার জন্য ম্যাকগুলিকে কেবলমাত্র '\ r' নতুন লাইনের জায়গায় ব্যবহার করতে হত। আমি এটা যাচাই করতে পারছি না, কিন্তু আমি মনে করি না যে ম্যাকসএক্স প্রজন্মের যে কোনও কাজ করে।

পুরোনো ম্যাকস (সিআর)
\r


M.txt ধারণকারী ডিরেক্টরির মধ্যে, grep "\r\n" * কোন ফলাফল দেয়। এর জন্য কোন ফলাফল নেই egrep -e "\r\n" * না grep -E "\r\n" *
Nicolas Raoul

@ এনকোলাস আহ, আমি ভুল বুঝেছি .. তুমি শুধু সিআর মানে \r আমার খারাপ। একটি পূর্ণ উইন্ডোজ newline প্রকৃতপক্ষে \r\n অথবা সিআরএলএফ
Jeff Atwood

0

আগের উত্তরগুলি অনুসরণ করে, 'ট্র' পদ্ধতিটি ভাল:

533 $ যদি [[-n " tr -cd "\r" <~/.bashrc "]]; তারপর" ডস "ইকো করুন; অন্যথায়" ইউনিক্স "প্রতিধ্বনি করুন; ফাই

ইউনিক্স

534 $ যদি [[-n " tr -cd "\r" <dosfile.txt "]]; তারপর" ডস "ইকো করুন; অন্যথায়" ইউনিক্স "প্রতিধ্বনি করুন; ফাই

ডস

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