মূল কন্টেন্টে যান
মডিউল 3 · 2-এর পাঠ 2কোর্সে 7/11~15 min
মডিউল পাঠ (2/2)

পাইপলাইন এবং ফিল্টার (গ্রেপ এবং |)

লিনাক্স কমান্ড লাইনের সবচেয়ে শক্তিশালী বৈশিষ্ট্যগুলির মধ্যে একটি হল বিভিন্ন কমান্ড সংযোগ করার ক্ষমতা যাতে একটির আউটপুট পরবর্তীটির জন্য ইনপুট হয়ে ওঠে। এই কৌশলটি পাইপলাইন ব্যবহার করে সম্পন্ন করা হয় এবং সাধারণত টেক্সট-ফিল্টারিং কমান্ড grep এর সাথে যুক্ত করা হয়।


ফিল্টারিং পাঠ্য: grep

grep (গ্লোবাল রেগুলার এক্সপ্রেশন প্রিন্ট) কমান্ড এক বা একাধিক ফাইলের মধ্যে পাঠ্যের একটি নির্দিষ্ট স্ট্রিং অনুসন্ধান করে এবং মিলে যাওয়া লাইনগুলিকে প্রিন্ট করে:

Bash
grep "string" [file_name]

grep এর জন্য দরকারী বিকল্প

  • grep -i "error" server.log: একটি কেস-সংবেদনশীল অনুসন্ধান করে (বড় হাতের এবং ছোট হাতের মধ্যে পার্থক্য উপেক্ষা করে, "ত্রুটি", "ত্রুটি" বা "ত্রুটি" খুঁজে বের করে)।
  • grep -n "connection" server.log: ম্যাচিং লাইনের সাথে লাইন নম্বর প্রদর্শন করে।
  • grep -v "INFO" server.log: অনুসন্ধানটিকে উল্টে করে, শুধুমাত্র সেই লাইনগুলি প্রদর্শন করে যেখানে নির্দিষ্ট কীওয়ার্ডটি না থাকে।

চেইনিং কমান্ড: পাইপলাইন |

পাইপলাইন অপারেটর উল্লম্ব বার দ্বারা প্রতিনিধিত্ব করা হয় |৷ এটি বাম দিকের কমান্ডের স্ট্যান্ডার্ড আউটপুট সরাসরি ডানদিকের কমান্ডের স্ট্যান্ডার্ড ইনপুটে পাঠায়:

Bash
[command1] | [command2]

উদাহরণস্বরূপ, যদি একটি লগ ফাইল বিশাল হয় এবং আপনি পুরো ফাইলটি প্রিন্ট না করে একটি নির্দিষ্ট শব্দ অনুসন্ধান করতে চান, আপনি cat এবং grep একত্রিত করতে পারেন:

Bash
cat logs/server.log | grep ERROR

এটি server.log ফাইলটি cat এর সাথে পড়ে, কিন্তু এটিকে স্ক্রিনে প্রিন্ট করার পরিবর্তে, এটি স্ট্রিমটিকে grep এ পাইপ করে, যা শুধুমাত্র "ERROR" শব্দটি ধারণকারী লাইনগুলিকে ফিল্টার করে এবং প্রদর্শন করে৷


ব্যবহারের উদাহরণ এবং সাধারণ ত্রুটি

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

Bash
grep "post" logs/access.log
# Output: (no results, search is case-sensitive by default)

তার ক্ষেত্রে নির্বিশেষে লাইন খুঁজে পেতে, -i পতাকা ব্যবহার করুন:

Bash
grep -i "post" logs/access.log
# Output:
# 127.0.0.1 - - [22/May/2026:10:10:00 +0000] "POST /login HTTP/1.1" 401 234

যদি নির্দিষ্ট ফাইলটি বিদ্যমান না থাকে, grep একটি ত্রুটি ফিরিয়ে দেবে:

Bash
grep "ERROR" nonexistent_file.log
# Output:
# grep: nonexistent_file.log: No such file or directory

নিজে চেষ্টা করে দেখুন

অনুশীলনী 1: লগ ফাইলে ত্রুটির জন্য অনুসন্ধান করুন

ব্যায়াম#linux.m3.l2.e1
প্রচেষ্টা: 0লোড হচ্ছে...

ফাইল 'logs/server.log' ফিল্টার করুন এবং শুধুমাত্র 'ERROR' (কেস-সংবেদনশীল) শব্দ ধারণকারী লাইনগুলি বের করে প্রদর্শন করুন।

সম্পাদক লোড হচ্ছে...
ইঙ্গিত দেখান

অনুসন্ধানের জন্য এবং ফাইল পাথের জন্য শব্দটি অনুসরণ করে grep কমান্ডটি ব্যবহার করুন।

সমাধান 3 প্রচেষ্টার পরে উপলব্ধ

ব্যায়াম 2: পাইপলাইন এবং ফিল্টার

ব্যায়াম#linux.m3.l2.e2
প্রচেষ্টা: 0লোড হচ্ছে...

'logs/server.log' ফাইলটি পড়তে cat কমান্ডটি ব্যবহার করুন এবং পাইপ (|) এর আউটপুট grep কমান্ডে ফিল্টার করুন এবং শুধুমাত্র 'WARNING' শব্দটি সম্বলিত লাইন মুদ্রণ করুন।

সম্পাদক লোড হচ্ছে...
ইঙ্গিত দেখান

পাইপ '|' ব্যবহার করে grep সতর্কতায় cat logs/server.log সংযোগ করুন চরিত্র

সমাধান 3 প্রচেষ্টার পরে উপলব্ধ

অনুশীলনী 3: কেস-সংবেদনশীল অনুসন্ধান

ব্যায়াম#linux.m3.l2.e3
প্রচেষ্টা: 0লোড হচ্ছে...

উপযুক্ত গ্রেপ পতাকা ব্যবহার করে 'logs/access.log' ফাইলে 'পোস্ট' (হয় বড় হাতের বা ছোট হাতের) শব্দ ধারণকারী সমস্ত লাইন অনুসন্ধান করুন।

সম্পাদক লোড হচ্ছে...
ইঙ্গিত দেখান

কেস সংবেদনশীলতা উপেক্ষা করতে -i বিকল্পের সাথে grep ব্যবহার করুন।

সমাধান 3 প্রচেষ্টার পরে উপলব্ধ