গ্রেপ, পিগ্রিপ, এগ্রেপ, এফগ্রিপ এর মধ্যে পার্থক্য কী?


55

আমি মধ্যে পার্থক্য মাধ্যমে হাঁটার চাই grep, pgrep, egrep, এবং fgrepএবং কিভাবে আমি তাদের ব্যবহার করেন।


1
এই সাইটে ইতিমধ্যে এই প্রশ্নের একটি ভাল উত্তর রয়েছে। unix.stackexchange.com/questions/17949/…
Ali786

এবং এখানে বাশ স্ক্রিপ্ট এস্যাগ্রিপ :-) রয়েছে।
পেভিক

উত্তর:


85

গ্রেপ, পিগ্রিপ, এগ্রিপ এবং fgrep (লিনাক্স) এর মধ্যে পার্থক্য:

, grep

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

স্ট্যান্ডার্ড গ্রেপ কমান্ডটি দেখতে:

grep <flags> '<regular expression>' <filename>

গ্রেপ অনুসন্ধানের ফলাফলগুলি স্ক্রিনে প্রিন্ট করে (stdout) এবং নিম্নলিখিত প্রস্থান মূল্যগুলি ফেরত দেয়:

0    A match was found.
1    No match was found.
>1   A syntax error was found or a file was inaccessible 
     (even if matches were found).

কয়েকটি সাধারণ পতাকা হ'ল: -cসফল ম্যাচের সংখ্যা গণনা করা এবং আসল ম্যাচগুলি মুদ্রণ না -iকরার জন্য, অনুসন্ধানের ক্ষেত্রে সংবেদনশীল করে তোলা, -nপ্রতিটি ম্যাচের মুদ্রণের আগে লাইন নম্বরটি মুদ্রণ করা, -vনিয়মিত অভিব্যক্তির পরিপূরক গ্রহণ করা (অর্থাৎ লাইনগুলি ফিরিয়ে দেওয়া যা মেলে না), এবং -lএক্সপ্রেশনটির সাথে মিল থাকা লাইনের সাথে ফাইলগুলির ফাইলের নাম মুদ্রণ করতে।

egrep

egrep একটি সংক্ষিপ্ত রূপ যা "এক্সটেন্ডেড গ্লোবাল রেগুলার এক্সপ্রেশন এক্সপ্রেশন" for

Egrep এ 'ই' এর অর্থ হ'ল নিয়মিত প্রকাশ হিসাবে প্যাটার্নটি বিবেচনা করুন। "বর্ধিত নিয়মিত এক্সপ্রেশন" সংক্ষেপিত 'ইআরই' egrep এ সক্ষম হয়েছে। egrep (যা হিসাবে একই grep -Eএকইরূপে) +, ?, |, (, এবং )যেমন মেটা-অক্ষর।

মৌলিক রেগুলার এক্সপ্রেশনের (, grep সঙ্গে), মেটা-অক্ষর ?, +, {, |, (, এবং )তাদের বিশেষ অর্থ হারান। আপনি মেটা-অক্ষর হিসাবে এই অক্ষরগুলি চিকিত্সা grep তাদের অব্যাহতি চান \?, \+, \{, \|, \(, এবং \)

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

grep "+" myfile.txt

অন্যদিকে egrep "+" কে একটি মেটা চরিত্র হিসাবে বিবেচনা করে এবং প্রতিটি লাইন প্রত্যাবর্তন করে কারণ প্লাসটিকে "এক বা একাধিক বার" হিসাবে ব্যাখ্যা করা হয়।

egrep "+" myfile.txt

এখানে প্রতিটি লাইন ফিরে আসে কারণ +এড্রেপ দ্বারা একটি মেটা চরিত্র হিসাবে বিবেচিত হয়েছিল। স্বাভাবিক গ্রেপ কেবল আক্ষরিক সাথে রেখাগুলি অনুসন্ধান করতে পারে +

fgrep

fgrep একটি সংক্ষিপ্ত রূপ যা "ফিক্সড-স্ট্রিং গ্লোবাল রেগুলার এক্সপ্রেশন মুদ্রণ" এর জন্য দাঁড়িয়ে থাকে।

fgrep (যা গ্রেপ-এফ এর সমান) স্থির বা দ্রুত গ্রেপ এবং গ্রেপ হিসাবে আচরণ করে তবে কোনও নিয়মিত এক্সপ্রেশন মেটা-চরিত্রকে বিশেষ হিসাবে চিহ্নিত করে না। অনুসন্ধানটি দ্রুত সম্পন্ন হবে কারণ এটি জটিল প্যাটার্নের পরিবর্তে কেবল একটি সাধারণ স্ট্রিং প্রক্রিয়া করে।

উদাহরণস্বরূপ, আমি যদি আক্ষরিক বিন্দু (।) এর জন্য আমার .বাশ_ প্রোফাইলটি অনুসন্ধান করতে চাইতাম তবে গ্রেপ ব্যবহার করা কঠিন হবে কারণ আমাকে বিন্দু থেকে বাঁচতে হবে কারণ বিন্দু একটি মেটা চরিত্র যার অর্থ 'ওয়াইল্ড কার্ড, কোনও একক অক্ষর':

grep "." myfile.txt

উপরের কমান্ডটি myfile.txt এর প্রতিটি লাইন প্রদান করে। পরিবর্তে এটি করুন:

fgrep "." myfile.txt

তারপরে কেবল সেই লাইনগুলিতেই আক্ষরিক '' রয়েছে। তাদের মধ্যে ফিরে আসে। fgrep আমাদের মেটা চরিত্রগুলি এড়িয়ে চলতে বিরক্ত করতে সহায়তা করে।

pgrep

পিগ্রিপ হ'ল একটি সংক্ষিপ্ত রূপ যা "প্রসেস-আইডি গ্লোবাল রেগুলার এক্সপ্রেশন এক্সপ্রেশন"।

pgrep বর্তমানে চলমান প্রক্রিয়াগুলির মধ্যে নজর রাখে এবং প্রসেস আইডিগুলি তালিকাভুক্ত করে যা নির্বাচনের মানদণ্ডকে stdout এর সাথে মেলে। pgrep হ'ল যখন আপনি জানতে চান সমস্ত প্রক্রিয়া আইডি পূর্ণসংখ্যা। উদাহরণস্বরূপ, আমি যদি আমার মাইএসকিএল প্রক্রিয়াটির কেবলমাত্র প্রসেস আইডি জানতে চাইতাম তবে আমি কমান্ডটি ব্যবহার করব pgrep mysqlযা 7312 এর মতো একটি প্রসেস আইডি ফিরিয়ে আনবে।


pgrepম্যানুয়াল থেকে : মিলে যাওয়ার জন্য ব্যবহৃত প্রক্রিয়াটির নামটি / proc / pid / stat এর আউটপুটে উপস্থিত 15 টি অক্ষরের মধ্যে সীমাবদ্ধ । সম্পূর্ণ কমান্ড লাইন, / proc / pid / cmdline এর সাথে মিল করতে -f বিকল্পটি ব্যবহার করুন ।
পাবলো এ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.