লিনাক্সে গ্রেপ কমান্ড কীভাবে ব্যবহার করবেন

লিনাক্স গ্রেপ কমান্ড একটি স্ট্রিং এবং প্যাটার্ন মেলানো ইউটিলিটি যা একাধিক ফাইলের সাথে মিলিত লাইনগুলি প্রদর্শন করে। এটি অন্যান্য কমান্ডের পাইপযুক্ত আউটপুট নিয়েও কাজ করে। আমরা আপনাকে কিভাবে দেখায়।

গল্প পিছনে গ্রেপ

দ্য গ্রেপ লিনাক্স এবং ইউনিক্স চেনাশোনাগুলিতে তিনটি কারণে বিখ্যাত command প্রথমত, এটি অত্যন্ত কার্যকর। দ্বিতীয়ত, বিকল্পগুলির সম্পদ অপ্রতিরোধ্য হতে পারে। তৃতীয়ত, এটি একটি নির্দিষ্ট প্রয়োজন মেটাতে রাতারাতি লেখা হয়েছিল। প্রথম দুটি হ'ল ধাক্কা; তৃতীয়টি সামান্য বন্ধ।

কেন থম্পসন নিয়মিত অভিব্যক্তি অনুসন্ধানের ক্ষমতাগুলি থেকে সরিয়ে নিয়েছিলেন ed সম্পাদক (স্বীকৃত ee-dee) এবং পাঠ্য ফাইলগুলির মাধ্যমে অনুসন্ধান করার জন্য একটি সামান্য প্রোগ্রাম তৈরি করেছেন his তার নিজের ব্যবহারের জন্য। বেল ল্যাবস-এ তাঁর বিভাগীয় প্রধান ডগ ম্যাকিলরোয় থম্পসনের কাছে গিয়ে সমস্যাটি বর্ণনা করেছেন যে তাঁর সহকর্মী ল ম্যাকমাহন যে সমস্যার মুখোমুখি ছিলেন।

ম্যাকমাহন পাঠ্য বিশ্লেষণের মাধ্যমে ফেডারালিস্ট কাগজপত্রের লেখককে সনাক্ত করার চেষ্টা করছিলেন। তার এমন একটি সরঞ্জামের প্রয়োজন ছিল যা পাঠ্য ফাইলের মধ্যে বাক্যাংশ এবং স্ট্রিংগুলি অনুসন্ধান করতে পারে। থম্পসন তার সন্ধ্যায় প্রায় এক ঘন্টা তার সরঞ্জামটিকে একটি সাধারণ উপযোগ হিসাবে ব্যয় করেছেন যা অন্যরা ব্যবহার করতে পারে এবং এর নামকরণ করে গ্রেপ। তিনি নামটি দিয়েছিলেন ed কমান্ড স্ট্রিং জি / রি / পি , যা "গ্লোবাল নিয়মিত অভিব্যক্তি অনুসন্ধান" হিসাবে অনুবাদ করে।

আপনি থম্পসনের জন্ম সম্পর্কে ব্রায়ান কার্নিগানের সাথে কথা বলতে পারেন গ্রেপ.

গ্রেপ সহ সাধারণ অনুসন্ধানগুলি

কোনও ফাইলের মধ্যে স্ট্রিং অনুসন্ধান করতে, অনুসন্ধান শব্দটি এবং কমান্ড লাইনে ফাইলের নামটি পাস করুন:

মিলের লাইনগুলি প্রদর্শিত হয়। এই ক্ষেত্রে এটি একক লাইন line মিলে যাওয়া পাঠ্যটি হাইলাইট করা হয়েছে। এটি কারণ বেশিরভাগ বিতরণে গ্রেপ এর সাথে যুক্ত হয়:

ওরফে গ্রেপ = "গ্রেপ - রঙ = অটো"

মিলগুলি যেখানে একাধিক লাইন মেলে সেখানে ফলাফলগুলি দেখুন। আমরা একটি অ্যাপ্লিকেশন লগ ফাইলে "গড়" শব্দটি সন্ধান করব। লগ ফাইলে শব্দটি ছোট হাতের অক্ষরে থাকলে আমরা স্মরণ করতে পারি না, আমরা এটি ব্যবহার করব -আই (কেস উপেক্ষা করুন) বিকল্প:

গ্রেপ -i গড় গীক -১.লগ

প্রতিটি ম্যাচিং লাইনটি প্রতিটিতে মেলানো পাঠ্যটি হাইলাইট করে প্রদর্শিত হয়।

আমরা -v (ইনভার্ট ম্যাচ) বিকল্পটি ব্যবহার করে নন-মিলনকারী লাইনগুলি প্রদর্শন করতে পারি।

গ্রেপ-ভি মেম জিক -১.লগ

কোনও হাইলাইটিং নেই কারণ এগুলি নন-মিলানো লাইন।

আমরা কারণ হতে পারে গ্রেপ সম্পূর্ণ নীরব থাকা। ফলাফলটি শেলটিতে ফেরত মান হিসাবে দেওয়া হয় গ্রেপ। শূন্যের ফলাফল মানে স্ট্রিং ছিল পাওয়া গেছে, এবং এর একটি ফলাফল এর অর্থ ছিল না পাওয়া গেছে। আমরা রিটার্ন কোডটি ব্যবহার করে চেক করতে পারি $? বিশেষ পরামিতি:

গ্রেপ-কিউ গড় গেইক -১.লগ
প্রতিধ্বনি $?
গ্রেপ-কিউ হাওটোজেক গেইক -১.লগ
প্রতিধ্বনি $?

গ্রেপ সহ পুনরাবৃত্তি অনুসন্ধানসমূহ

নেস্টেড ডিরেক্টরি এবং সাব ডিরেক্টরি ডিরেক্টরি অনুসন্ধান করার জন্য -r (পুনরাবৃত্ত) বিকল্পটি ব্যবহার করুন। নোট করুন যে আপনি কমান্ড লাইনে কোনও ফাইলের নাম সরবরাহ করেন না, আপনাকে অবশ্যই একটি পথ সরবরাহ করতে হবে। এখানে আমরা বর্তমান ডিরেক্টরিতে অনুসন্ধান করছি ”" এবং যে কোনও উপ-ডিরেক্টরি:

grep -r -i মেমফ্রি

আউটপুটে প্রতিটি মিলের লাইনের ডিরেক্টরি এবং ফাইলের নাম অন্তর্ভুক্ত থাকে।

আমরা বানাতে পারিগ্রেপ ব্যবহার করে প্রতীকী লিঙ্কগুলি অনুসরণ করুন -আর (পুনরাবৃত্তিমূলক প্রেরণা) বিকল্প। আমরা এই ডিরেক্টরিতে একটি প্রতীকী লিঙ্ক পেয়েছি, যার নাম রয়েছে লগ-ফোল্ডার। এটি নির্দেশ করে / হোম / ডেভ / লগ.

ls -l লগ-ফোল্ডার

আসুন এর সাথে আমাদের শেষ অনুসন্ধানটি পুনরাবৃত্তি করি-আর (পুনরাবৃত্তিমূলক বিন্যাস) বিকল্প:

গ্রেপ -আর -আই মেমফ্রি।

প্রতীকী লিঙ্কটি অনুসরণ করা হয় এবং এটি যে ডিরেক্টরিটি নির্দেশ করে সেটি অনুসন্ধান করা হয় গ্রেপ খুব।

পুরো শব্দ অনুসন্ধান করা হচ্ছে

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

গ্রেপ -i ফ্রি গীক -১.লগ

ফলাফলগুলি এমন রেখাগুলি যেগুলিতে "ফ্রি" স্ট্রিং রয়েছে তবে সেগুলি পৃথক শব্দ নয়। তারা "মেমফ্রি" স্ট্রিংয়ের অংশ।

বাধ্য করা গ্রেপ শুধুমাত্র পৃথক "শব্দ" মেলে, ব্যবহার করুন -উ (শব্দ regexp) বিকল্প।

গ্রেপ-ডাব্লু-আই ফ্রি গীক -১.লগ
প্রতিধ্বনি $?

এবার কোনও ফলাফল নেই কারণ অনুসন্ধান শব্দটি "ফ্রি" পৃথক শব্দ হিসাবে ফাইলটিতে উপস্থিত হয় না।

একাধিক অনুসন্ধানের শর্তাদি ব্যবহার করা

দ্য -ই (এক্সটেন্ডেড রেজিএক্সপ্যাক্স) বিকল্পটি আপনাকে একাধিক শব্দের অনুসন্ধান করতে দেয় (দ্য -ই বিকল্পটি হ্রাস করা প্রতিস্থাপন করে egrep সংস্করণ গ্রেপ.)

এই কমান্ডটি দুটি গড় পদ, "গড়" এবং "মেমফ্রি" অনুসন্ধান করে।

গ্রেপ-ই-ডব্লিউ -i "গড় | মেমফ্রি" গীক -১.লগ

সমস্ত মিলের লাইনগুলি প্রতিটি অনুসন্ধানের পদগুলির জন্য প্রদর্শিত হয়।

আপনি একাধিক পদ অনুসন্ধান করতে পারেন যা প্রয়োজনীয়ভাবে পুরো শব্দ নয়, তবে সেগুলি পুরো শব্দও হতে পারে।

দ্য -ই (নিদর্শন) বিকল্প আপনাকে কমান্ড লাইনে একাধিক অনুসন্ধান পদ ব্যবহার করতে দেয় allows আমরা অনুসন্ধানের প্যাটার্ন তৈরি করতে নিয়মিত এক্সপ্রেশন বন্ধনী বৈশিষ্ট্যটি ব্যবহার করছি। এটা বলে গ্রেপ "[]" বন্ধনীগুলির মধ্যে থাকা যে কোনও একটি অক্ষরের সাথে মেলে। এর অর্থ গ্রেপ এটি অনুসন্ধান হিসাবে "কেবি" বা "কেবি" মিলবে match

উভয় স্ট্রিং মিলেছে এবং প্রকৃতপক্ষে কিছু লাইনে উভয় স্ট্রিং রয়েছে।

লাইনগুলি হুবহু মিলছে

দ্য-এক্স (লাইন regexp) শুধুমাত্র লাইন মেলে যেখানে পুরো লাইন অনুসন্ধান শব্দটির সাথে মেলে। আসুন এমন একটি তারিখ এবং সময় স্ট্যাম্পের সন্ধান করি যা আমরা জানি যে লগ ফাইলে কেবল একবার উপস্থিত হয়:

গ্রেপ-এক্স "20-জানু - 06 15:24:35" জিক -১.লগ

মেলে এমন একক লাইনটি পাওয়া যায় এবং প্রদর্শিত হয়।

এর বিপরীতটি কেবল সেই লাইনগুলি দেখায় না ম্যাচ. আপনি যখন কনফিগারেশন ফাইলগুলি দেখছেন তখন এটি কার্যকর হতে পারে। মন্তব্যগুলি দুর্দান্ত, তবে কখনও কখনও তাদের সবার মধ্যে প্রকৃত সেটিংসটি খুঁজে পাওয়া শক্ত। এখানে / ইত্যাদি / sudoers ফাইল:

আমরা কার্যকরভাবে এই মত মন্তব্য লাইন ফিল্টার করতে পারেন:

sudo গ্রেপ -v "#" / ইত্যাদি / sudoers

পার্স করা এটি অনেক সহজ।

কেবল ম্যাচিংয়ের পাঠ্য প্রদর্শন করা হচ্ছে

এমন একটি অনুষ্ঠান হতে পারে যখন আপনি পুরো ম্যাচিং লাইনটি দেখতে চান না, কেবলমাত্র ম্যাচের পাঠ্য। দ্য -ও (কেবল মিলছে) বিকল্পটি কেবল এটি করে।

গ্রেপ -o মেমফ্রি গীক -১.লগ

প্রদর্শনটি পুরো মেলানো লাইনের পরিবর্তে অনুসন্ধানের সাথে মেলে এমন পাঠ্যটি দেখানোর ক্ষেত্রে হ্রাস পেয়েছে।

গ্রেপ সহ গণনা

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

গ্রেপ-সি গড় গীক -১.লগ

গ্রেপ অনুসন্ধান পদটি এই ফাইলে 240 বার প্রদর্শিত হয়েছে বলে প্রতিবেদন করেছে।

আপনি করতে পারেন গ্রেপ প্রতিটি ম্যাচিং লাইনের জন্য লাইন নম্বরটি ব্যবহার করে প্রদর্শন করুন -এন (লাইন নম্বর) বিকল্প।

grep -n জান গীক -১.লগ

প্রতিটি মিলে যাওয়া লাইনের জন্য লাইন নম্বরটি লাইনের শুরুতে প্রদর্শিত হয়।

প্রদর্শিত ফলাফলের সংখ্যা হ্রাস করতে, ব্যবহার করুন -ম (সর্বাধিক গণনা) বিকল্প। আমরা আউটপুটটিকে পাঁচটি মিলের লাইনে সীমাবদ্ধ করতে যাচ্ছি:

গ্রেপ-এম 5 -এন জান গীক -১.লগ

প্রসঙ্গ যুক্ত করা হচ্ছে

প্রতিটি মিলে যাওয়া লাইনের জন্য কিছু অতিরিক্ত লাইন — সম্ভবত মিল না-পাওয়া লাইনগুলি দেখতে সক্ষম হওয়া প্রায়শই দরকারী। এটি আপনার আগ্রহী কোনটি মিলিত রেখাগুলি আলাদা করতে সহায়তা করে।

ম্যাচিং লাইনের পরে কিছু লাইন দেখাতে, -A (প্রসঙ্গের পরে) বিকল্পটি ব্যবহার করুন। আমরা এই উদাহরণে তিনটি লাইন জিজ্ঞাসা করছি:

গ্রেপ -A 3 -x "20-জানু -06 15:24:35" গিক -১.লগ

মিলের লাইনের আগে থেকে কিছু লাইন দেখতে, ব্যবহার করুন -বি (পূর্বে প্রসঙ্গ) বিকল্প।

গ্রেপ-বি 3 -x "20-জানু -06 15:24:35" গিক -১.লগ

এবং ম্যাচিং লাইনটি আগে এবং পরে লাইনগুলি অন্তর্ভুক্ত করতে ব্যবহার করুন -সি (প্রসঙ্গ) বিকল্প।

গ্রেপ-সি 3 -x "20-জানু -06 15:24:35" গিক -১.লগ

ম্যাচিং ফাইলগুলি দেখানো হচ্ছে

অনুসন্ধান শব্দটি থাকা ফাইলগুলির নাম দেখতে, ব্যবহার করুন -লি (ম্যাচ সহ ফাইলগুলি) বিকল্প। কোন সি সোর্স কোড ফাইলগুলিতে উল্লেখ রয়েছে contain sl.h শিরোনাম ফাইল, এই কমান্ডটি ব্যবহার করুন:

grep -l "sl.h" * .সি

ফাইলের নামগুলি তালিকাভুক্ত করা হয়েছে, মেলানো লাইন নয়।

এবং অবশ্যই, আমরা সেই ফাইলগুলির সন্ধান করতে পারি যা অনুসন্ধান শব্দটি ধারণ করে না। দ্য -ল (ম্যাচ ব্যতীত ফাইলগুলি) বিকল্পটি কেবল এটি করে।

grep -L "sl.h" * .c

লাইনের শুরু এবং সমাপ্তি

আমরা জোর করতে পারি গ্রেপ কেবলমাত্র ম্যাচগুলি প্রদর্শন করতে যা উভয়ই শুরুতে বা একটি লাইনের শেষে থাকে। "^" নিয়মিত এক্সপ্রেশন অপারেটর একটি লাইনের সূচনার সাথে মেলে। ব্যবহারিকভাবে লগ ফাইলের মধ্যে থাকা সমস্ত রেখায় ফাঁকা জায়গা থাকবে, তবে আমরা সেই লাইনগুলির সন্ধান করতে যাচ্ছি যার প্রথম অক্ষর হিসাবে একটি স্থান রয়েছে:

গ্রেপ "^" geek-1.log

লাইনের শুরুতে character প্রথম অক্ষর হিসাবে স্থান রয়েছে এমন রেখাগুলি প্রদর্শিত হয়।

লাইনের শেষটি মেলাতে, "$" নিয়মিত এক্সপ্রেশন অপারেটরটি ব্যবহার করুন। আমরা "00" এর সাথে শেষ হওয়া লাইনগুলি অনুসন্ধান করতে যাচ্ছি

গ্রেপ "00 $" geek-1.log

ডিসপ্লেটি তাদের লাইনগুলিকে চূড়ান্ত অক্ষর হিসাবে "00" দেখায়।

গ্রেপ সহ পাইপ ব্যবহার করা

অবশ্যই, আপনি ইনপুট পাইপ করতে পারেন গ্রেপ , থেকে আউটপুট পাইপ গ্রেপ অন্য প্রোগ্রামে, এবং আছে গ্রেপ একটি পাইপ চেইন এর মাঝখানে বাসা।

ধরা যাক আমরা আমাদের সি সোর্স কোড ফাইলগুলিতে "এক্সট্র্যাক্টপ্যারামিটারগুলি" স্ট্রিংয়ের সমস্ত উপস্থিতি দেখতে চাই। আমরা জানি যে সেখানে বেশ কয়েকটা হবে, তাই আমরা আউটপুটটি পাইপ করি কম:

গ্রেপ "এক্সট্র্যাক্ট প্যারামিটারস" * .সি | কম

আউটপুট উপস্থাপন করা হয় কম.

এটি আপনাকে ফাইলের তালিকা এবং ব্যবহারের জন্য পৃষ্ঠাতে দেয় কম অনুসন্ধান সুবিধা।

আমরা আউটপুট পাইপ যদি গ্রেপ মধ্যে ডাব্লুসি এবং ব্যবহার করুন -লি (লাইন) বিকল্পটি, আমরা উত্স কোড ফাইলগুলিতে "এক্সট্র্যাক্টামেন্টস" যুক্ত রেখার সংখ্যা গণনা করতে পারি। (আমরা এটি ব্যবহার করে এটি অর্জন করতে পারি গ্রেপ-সি (গণনা) বিকল্প, তবে এটি পাইপিং আউট প্রদর্শনের জন্য একটি ঝরঝরে উপায় গ্রেপ.)

গ্রেপ "এক্সট্র্যাক্ট প্যারামিটারস" * .সি | wc -l

পরবর্তী কমান্ডের সাহায্যে আমরা আউটপুটটি পাইপ করছি ls মধ্যে গ্রেপ এবং থেকে আউটপুট পাইপ গ্রেপ মধ্যে সাজান । আমরা বর্তমান ডিরেক্টরিতে ফাইলগুলি তালিকাভুক্ত করছি, তাদের মধ্যে "অগস্ট" স্ট্রিংটি নির্বাচন করে এবং ফাইলের আকার অনুসারে বাছাই করছি:

ls -l | গ্রেপ "আগস্ট" | বাছাই + 4n

এটি ভেঙে দেওয়া যাক:

  • ls -l: ফাইলগুলি ব্যবহার করে একটি দীর্ঘ বিন্যাসের তালিকা সম্পাদন করুন ls.
  • গ্রেপ "আগস্ট": থেকে লাইন নির্বাচন করুন ls তাদের মধ্যে "আগস্ট" রয়েছে এমন তালিকা তৈরি করা হচ্ছে। মনে রাখবেন যে এটির মধ্যে "অগস্ট" থাকা ফাইলগুলিও খুঁজে পেতে পারে।
  • বাছাই + 4n: চতুর্থ কলামে (ফাইলাইজ) গ্রেপ থেকে আউটপুটটি সাজান।

আমরা আগস্টে (সমস্ত বছর নির্বিশেষে) ফাইলের আকারের ক্রমযুক্ত সংশোধিত সমস্ত ফাইলের একটি বাছাই তালিকা পাই।

সম্পর্কিত:কীভাবে লিনাক্সে পাইপ ব্যবহার করতে হয়

গ্রেপ: কম কমান্ড, মিত্রের বেশি

গ্রেপ আপনার নিষ্পত্তি করতে একটি দুর্দান্ত সরঞ্জাম। এটি 1974 সাল থেকে তারিখ এবং এখনও শক্তিশালী চলছে কারণ আমাদের এটি যা করে তা দরকার এবং এটির চেয়ে ভাল কিছুই হয় না।

দম্পতি গ্রেপ কিছু নিয়মিত এক্সপ্রেশন-ফু সহ সত্যিই এটি পরবর্তী স্তরে নিয়ে যায়।

সম্পর্কিত:আরও ভাল অনুসন্ধান এবং সময় সাশ্রয় করতে বেসিক নিয়মিত এক্সপ্রেশন কীভাবে ব্যবহার করবেন


$config[zx-auto] not found$config[zx-overlay] not found