আক্ষরিক স্ট্রিং জন্য গ্রেপ


103

খাঁটি আক্ষরিক স্ট্রিংগুলি অনুসন্ধান করার জন্য আমি একটি গ্রেপ-টাইপ সরঞ্জামের পরে আছি। আমি একটি পৃথক লগ ফাইলের একটি লাইন অংশ হিসাবে একটি লগ ফাইলের একটি লাইন উপস্থিতি সন্ধান করছি। অনুসন্ধান পাঠ্যে সমস্ত ধরণের রেগেক্স বিশেষ অক্ষর থাকতে পারে, যেমন []().*^$-\,।

এমন কোনও ইউনিক্স অনুসন্ধান ইউটিলিটি রয়েছে যা রেজেক্স ব্যবহার করবে না, তবে কেবল একটি স্ট্রিংয়ের আক্ষরিক উপস্থিতিগুলি অনুসন্ধান করবে?


ভাবছেন কেন প্রশ্নটি "আমি কী grepআক্ষরিক স্ট্রিংগুলি অনুসন্ধান করতে পারি ?" পরিবর্তে "এরকম কিছু আছে যা grepআক্ষরিক স্ট্রিংগুলি অনুসন্ধান করতে পারে?" ফ্ল্যাট-হেড স্ক্রু ড্রাইভারগুলি ফিলিপসের স্ক্রু- ;)
হেডগুলি

উত্তর:


138

আপনি এর জন্য গ্রেপ ব্যবহার করতে পারেন -F বিকল্পের সাহায্যে।

-F, --fixed-strings       PATTERN is a set of newline-separated fixed strings

"নিউলাইন-পৃথক স্থির স্ট্রিংস" টার্মিনাল প্রম্পটে আমি কীভাবে এটি করতে পারি? আমি জানি যে আমি একটি প্যাটার্ন ফাইল তৈরি করতে পারি, তবে কোনও ফাইল ছাড়াই প্রম্পটে কী সম্ভব? এন্টার টিপলে স্পষ্টতই কমান্ডটি কার্যকর হয়।
ADTC

13
আমি আমার নিজের প্রশ্নের উত্তর দেব। :) আপনাকে কেবল -eবিকল্পটির পুনরাবৃত্তি ব্যবহার করে একাধিক নির্দিষ্ট স্ট্রিং সরবরাহ করতে হবে । ভালো: grep -F -e "fixed1" -e "fixed2" -e "fixed3" -e "fixed4"। কোনও নতুন
লাইনের

4
সোলারিসে পাওয়া যায় না। পরিবর্তে fgrepব্যবহৃত হয়।
majkinetor

4
@ এডটিসি আমি জানতে পেরেছিলাম যে অনুসন্ধানের স্ট্রিংয়ের জন্য আমাকে কেবলমাত্র বিশেষ অক্ষরগুলির জন্য একক উদ্ধৃতি ব্যবহার করতে হবে, অন্যথায় কিছুই পাওয়া যাবে না। সুতরাং এটি কোনও ফল grep --include=\*.php -FRn -e "$$"দেয়নি : একক কোয়েট ব্যবহার করে আমাকে পছন্দসই ফলাফল দিয়েছে:grep --include=\*.php -FRn -e '$$'
পাইমল

4
আপনি হয় সঠিক @ADTC। $এবং আরও কয়েকটি অক্ষর বিশেষ এবং এগুলি আপনার প্রবেশের পরে এবং grep(বা যে কোনও আদেশ) কার্যকর হওয়ার পরে বাশ দ্বারা প্রতিস্থাপিত হবে । আপনি বাশকে বলতে পারেন যে সমস্ত অক্ষরকে (একক উদ্ধৃতি ব্যতীত) একক উদ্ধৃতিতে আবদ্ধ করে রেখে দেওয়া হোক ou আপনার যদি একটি একক উদ্ধৃতি টাইপ করতে হয় তবে এটি এর মতো করুন'I'\''m special'
এনডেমো

15

এটি হয় fgrepবা grep -Fযা নিয়মিত প্রকাশ করে না। fgrepঅভিন্ন grep -Fতবে আমি অভ্যন্তরীণভাবে অলস হয়ে:

grep   ->  grep
fgrep  ->  grep -F  (fixed)
egrep  ->  grep -E  (extended)
rgrep  ->  grep -r  (recursive, on platforms that support it).

জিএনইউ গ্রেপের জন্য, fgrep কেবল
গ্রেপকে একটি সিমিলিংক

4
egrepএবং fgrepPOSIX মান দ্বারা নির্দিষ্ট করা হয় না; grep -Fএবং grep -E হয়
রিচার্ড হ্যানসেন


3

আপনি জাজকটিও ব্যবহার করতে পারেন, কারণ এতে স্থির স্ট্রিং সন্ধান করার ক্ষমতা রয়েছে পাশাপাশি প্রোগ্রামিং ক্ষমতাও রয়েছে, যেমন কেবল

awk '{for(i=1;i<=NF;i++) if($i == "mystring") {print "do data manipulation here"} }' file

2
cat list.txt
one:hello:world
two:2:nothello

three:3:kudos

grep --color=always -F"hello

three" list.txt

আউটপুট

one:hello:world
three:3:kudos

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