ম্যাচের আশেপাশের লাইনগুলি প্রদর্শন করতে গ্রেপ ব্যবহার করে

ম্যাচের আশেপাশের লাইনগুলি প্রদর্শন করতে গ্রেপ ব্যবহার করে
Bash

প্রাসঙ্গিক অনুসন্ধানের জন্য গ্রেপ আয়ত্ত করা

টেক্সট ফাইলগুলির সাথে কাজ করার সময়, নির্দিষ্ট প্যাটার্ন বা স্ট্রিংগুলির জন্য প্রায়ই অনুসন্ধান করা প্রয়োজন। ইউনিক্স/লিনাক্সে 'grep' কমান্ড এই উদ্দেশ্যে একটি শক্তিশালী টুল। যাইহোক, মাঝে মাঝে শুধু ম্যাচ খুঁজে পাওয়াই যথেষ্ট নয়; প্রসঙ্গটি বোঝার জন্য আপনাকে মিলিত প্যাটার্নের চারপাশের লাইনগুলি দেখতেও হতে পারে।

এই নিবন্ধে, আমরা কীভাবে `grep` ব্যবহার করতে পারি তা শুধু আপনার কাঙ্খিত নিদর্শনই খুঁজে বের করতেই নয়, প্রতিটি ম্যাচের জন্য পূর্ববর্তী ও পরবর্তী পাঁচটি লাইনও প্রদর্শন করব। এই কৌশলটি ডিবাগিং, লগ বিশ্লেষণ এবং ডেটা নিষ্কাশন কাজের জন্য অমূল্য।

আদেশ বর্ণনা
grep -C প্রতিটি ম্যাচের আগে এবং পরে প্রসঙ্গ লাইনের নির্দিষ্ট সংখ্যক সহ মিলিত লাইনগুলি প্রদর্শন করে।
#!/bin/bash স্ক্রিপ্টটি ব্যাশ শেল পরিবেশে চালানো উচিত উল্লেখ করে।
import re পাইথনে রেগুলার এক্সপ্রেশন লাইব্রেরি আমদানি করে, যা স্ট্রিং-এর মধ্যে প্যাটার্ন মেলানোর অনুমতি দেয়।
max() নেতিবাচক সূচকগুলি এড়াতে এখানে ব্যবহৃত ইনপুট মানগুলির মধ্যে বৃহত্তমটি প্রদান করে৷
min() তালিকার দৈর্ঘ্যের বাইরে সূচকগুলি এড়াতে এখানে ব্যবহৃত ইনপুট মানগুলির মধ্যে সবচেয়ে ছোটটি প্রদান করে।
enumerate() একটি পুনরাবৃত্তে একটি কাউন্টার যোগ করে, একটি লুপে সূচক এবং মান উভয়ই পাওয়ার জন্য দরকারী।
sys.argv একটি পাইথন স্ক্রিপ্টে পাস করা কমান্ড-লাইন আর্গুমেন্টে অ্যাক্সেস প্রদান করে।

গ্রেপ প্রাসঙ্গিক অনুসন্ধান স্ক্রিপ্ট বোঝা

প্রথম স্ক্রিপ্ট, ব্যাশে লেখা, লিভারেজ grep একটি ফাইলের মধ্যে প্যাটার্ন অনুসন্ধান করার জন্য কমান্ড এবং প্রতিটি ম্যাচের চারপাশে লাইন প্রদর্শন করুন। দ্য grep -C বিকল্পটি বিশেষভাবে শক্তিশালী, কারণ এটি ব্যবহারকারীদের প্রতিটি ম্যাচের আগে এবং পরে প্রদর্শনের জন্য প্রসঙ্গ লাইনের সংখ্যা নির্দিষ্ট করতে দেয়। এই স্ক্রিপ্টে, ব্যবহারকারী আর্গুমেন্ট হিসাবে একটি অনুসন্ধান প্যাটার্ন এবং একটি ফাইলের নাম প্রদান করে। তারপর স্ক্রিপ্ট চালানো হয় grep -C 5, কোথায় -C 5 বলে grep প্রতিটি মিলিত লাইনের আগে এবং পরে পাঁচটি লাইন দেখাতে। এই পদ্ধতিটি বৃহৎ টেক্সট ফাইলগুলির মধ্যে মিলগুলিকে দ্রুত খুঁজে বের করার এবং প্রাসঙ্গিককরণের জন্য সহজবোধ্য এবং দক্ষ, এটি লগ বিশ্লেষণ বা ডিবাগিংয়ের মতো কাজের জন্য আদর্শ করে তোলে।

পাইথনে লেখা দ্বিতীয় স্ক্রিপ্টটি একই লক্ষ্য অর্জনের জন্য আরও প্রোগ্রামেটিক পদ্ধতির প্রস্তাব করে। এটি ব্যবহার করে re নিয়মিত এক্সপ্রেশন ম্যাচিং জন্য মডিউল এবং sys.argv কমান্ড-লাইন আর্গুমেন্ট পরিচালনার জন্য। দ্য grep_context ফাংশন ফাইলটিকে লাইনের একটি তালিকায় পড়ে এবং তাদের মাধ্যমে পুনরাবৃত্তি করে, প্রতিটি লাইন ব্যবহার করে ম্যাচের জন্য পরীক্ষা করে re.search. যখন একটি মিল পাওয়া যায়, এটি ম্যাচের আগে এবং পরে নির্দিষ্ট সংখ্যক লাইন অন্তর্ভুক্ত করার জন্য শুরু এবং শেষ সূচকগুলি গণনা করে, যাতে তারা তালিকার সীমার মধ্যে থাকে তা নিশ্চিত করে max এবং min ফাংশন এই স্ক্রিপ্টটি নমনীয়তা প্রদান করে এবং নির্দিষ্ট প্রয়োজন অনুসারে সহজেই প্রসারিত বা পরিবর্তন করা যেতে পারে, যেমন প্রসঙ্গ পরিসর পরিবর্তন করা বা অন্যান্য ডেটা প্রক্রিয়াকরণ কাজের সাথে একীভূত করা।

প্রাসঙ্গিক লাইন অনুসন্ধানের জন্য গ্রেপ কীভাবে ব্যবহার করবেন

প্রাসঙ্গিক লাইন অনুসন্ধানের জন্য ব্যাশ স্ক্রিপ্ট

#!/bin/bash
# Usage: ./script.sh pattern filename
pattern=$1
filename=$2
grep -C 5 "$pattern" "$filename"

প্রসঙ্গ বিকল্পগুলির সাথে গ্রেপ ব্যবহার করা

Python Script to mimic Grep with context

import sys
import re
def grep_context(pattern, filename, context=5):
    with open(filename, 'r') as file:
        lines = file.readlines()
    for i, line in enumerate(lines):
        if re.search(pattern, line):
            start = max(i - context, 0)
            end = min(i + context + 1, len(lines))
            for l in lines[start:end]:
                print(l, end='')
if __name__ == "__main__":
    pattern = sys.argv[1]
    filename = sys.argv[2]
    grep_context(pattern, filename)

প্রাসঙ্গিক অনুসন্ধানের জন্য উন্নত গ্রেপ বিকল্পগুলি অন্বেষণ করা

মৌলিকের বাইরে grep -C বিকল্প, বেশ কয়েকটি উন্নত grep প্যাটার্ন অনুসন্ধান এবং পার্শ্ববর্তী লাইন প্রদর্শন করার সময় বিকল্পগুলি আরও বেশি নিয়ন্ত্রণ এবং নমনীয়তা প্রদান করে। যেমন একটি বিকল্প হয় grep -A, যা প্রতিটি ম্যাচের পরে একটি নির্দিষ্ট সংখ্যক লাইন প্রদর্শন করে। এটি বিশেষভাবে উপযোগী হতে পারে যখন একটি ম্যাচের পরের প্রসঙ্গটি আপনার বিশ্লেষণের জন্য আরও গুরুত্বপূর্ণ। একইভাবে, grep -B প্রতিটি ম্যাচের আগে লাইন দেখায়, নেতৃস্থানীয় প্রসঙ্গের একটি ফোকাস ভিউ অফার করে। এই বিকল্পগুলিকে একত্রিত করে, আপনি আপনার প্রয়োজনীয়তাগুলিকে যথাযথভাবে মাপসই করার জন্য আউটপুটটি তৈরি করতে পারেন।

আরেকটি শক্তিশালী বৈশিষ্ট্য হল রেগুলার এক্সপ্রেশনের ব্যবহার grep. রেগুলার এক্সপ্রেশন ব্যবহার করে, আপনি আরও জটিল সার্চ করতে পারেন যা সাধারণ স্ট্রিং ম্যাচিং এর বাইরে যায়। উদাহরণস্বরূপ, ব্যবহার করে -E সঙ্গে বিকল্প grep বর্ধিত রেগুলার এক্সপ্রেশন ব্যবহারের অনুমতি দেয়, আরও ব্যাপক প্যাটার্ন ম্যাচিং ক্ষমতা প্রদান করে। এটি এমন পরিস্থিতিতে দরকারী যেখানে আপনাকে বিভিন্ন দৈর্ঘ্য বা বিন্যাসের সাথে নিদর্শনগুলি মেলাতে হবে। উপরন্তু, grep সমর্থন করে --color বিকল্প, যা আউটপুটে মিলিত নিদর্শনগুলিকে হাইলাইট করে, যা পাঠ্যের বড় ব্লকের মধ্যে মিলগুলিকে দৃশ্যত সনাক্ত করা সহজ করে তোলে।

গ্রেপ এবং প্রাসঙ্গিক অনুসন্ধান সম্পর্কে সাধারণ প্রশ্ন

  1. আমি কিভাবে grep ব্যবহার করে প্রতিটি ম্যাচের পরে শুধুমাত্র লাইন প্রদর্শন করতে পারি?
  2. ব্যবহার grep -A প্রতিটি ম্যাচের পরে আপনি যে লাইনগুলি প্রদর্শন করতে চান তার সংখ্যা দ্বারা অনুসরণ করুন।
  3. গ্রেপের সাথে ম্যাচের আগে আমি কীভাবে লাইন দেখাব?
  4. দ্য grep -B বিকল্পটি আপনাকে প্রতিটি ম্যাচের আগে লাইন প্রদর্শন করতে দেয়, তারপরে লাইনের সংখ্যা।
  5. আমি কি ম্যাচের আগে এবং পরে লাইন দেখানোর বিকল্পগুলি একত্রিত করতে পারি?
  6. হ্যাঁ, সমন্বয় grep -A এবং -B বিকল্পগুলি প্রতিটি ম্যাচের আগে এবং পরে উভয় লাইন দেখাবে।
  7. grep --color অপশন কি করে?
  8. দ্য --color বিকল্পটি আউটপুটে মিলিত নিদর্শনগুলিকে হাইলাইট করে, তাদের দেখতে সহজ করে।
  9. আমি কিভাবে grep এর সাথে নিয়মিত এক্সপ্রেশন ব্যবহার করতে পারি?
  10. ব্যবহার grep -E আরও জটিল প্যাটার্ন ম্যাচিংয়ের জন্য বর্ধিত রেগুলার এক্সপ্রেশন সক্ষম করার বিকল্প।
  11. ম্যাচের সংখ্যা গ্রেপ ডিসপ্লে সীমিত করার একটি উপায় আছে কি?
  12. হ্যাঁ grep -m একটি সংখ্যা দ্বারা অনুসরণ করা বিকল্পটি প্রদর্শিত ম্যাচের সংখ্যা সীমাবদ্ধ করে।
  13. আমি কি গ্রেপ অনুসন্ধানগুলি কেস-অসংবেদনশীল করতে পারি?
  14. ব্যবহার করে grep -i বিকল্পটি অনুসন্ধান কেস-সংবেদনশীল করে তোলে।
  15. আমি কিভাবে grep এর সাথে একাধিক ফাইলে নিদর্শন অনুসন্ধান করব?
  16. আপনি একাধিক ফাইলের নাম প্রদান করতে পারেন বা এর সাথে ওয়াইল্ডকার্ড ব্যবহার করতে পারেন grep একসাথে বেশ কয়েকটি ফাইল জুড়ে অনুসন্ধান করতে।

প্রাসঙ্গিক অনুসন্ধানের জন্য উন্নত গ্রেপ বিকল্পগুলি অন্বেষণ করা

মৌলিকের বাইরে grep -C বিকল্প, বেশ কয়েকটি উন্নত grep প্যাটার্ন অনুসন্ধান এবং পার্শ্ববর্তী লাইন প্রদর্শন করার সময় বিকল্পগুলি আরও বেশি নিয়ন্ত্রণ এবং নমনীয়তা প্রদান করে। যেমন একটি বিকল্প হয় grep -A, যা প্রতিটি ম্যাচের পরে একটি নির্দিষ্ট সংখ্যক লাইন প্রদর্শন করে। এটি বিশেষভাবে উপযোগী হতে পারে যখন একটি ম্যাচের পরের প্রসঙ্গটি আপনার বিশ্লেষণের জন্য আরও গুরুত্বপূর্ণ। একইভাবে, grep -B প্রতিটি ম্যাচের আগে লাইন দেখায়, নেতৃস্থানীয় প্রসঙ্গের একটি ফোকাস ভিউ অফার করে। এই বিকল্পগুলিকে একত্রিত করে, আপনি আপনার প্রয়োজনীয়তাগুলিকে যথাযথভাবে মাপসই করার জন্য আউটপুটটি তৈরি করতে পারেন।

আরেকটি শক্তিশালী বৈশিষ্ট্য হল রেগুলার এক্সপ্রেশনের ব্যবহার grep. রেগুলার এক্সপ্রেশন ব্যবহার করে, আপনি আরও জটিল সার্চ করতে পারেন যা সাধারণ স্ট্রিং মিলের বাইরে যায়। উদাহরণস্বরূপ, ব্যবহার করে -E সঙ্গে বিকল্প grep বর্ধিত রেগুলার এক্সপ্রেশন ব্যবহারের অনুমতি দেয়, আরও ব্যাপক প্যাটার্ন ম্যাচিং ক্ষমতা প্রদান করে। এটি এমন পরিস্থিতিতে দরকারী যেখানে আপনাকে বিভিন্ন দৈর্ঘ্য বা বিন্যাসের সাথে নিদর্শনগুলি মেলাতে হবে। উপরন্তু, grep সমর্থন করে --color বিকল্প, যা আউটপুটে মিলিত নিদর্শনগুলিকে হাইলাইট করে, যা পাঠ্যের বড় ব্লকের মধ্যে মিলগুলিকে দৃশ্যত সনাক্ত করা সহজ করে তোলে।

মূল পয়েন্ট সারসংক্ষেপ

মিশ্রন দ্বারা grep বিকল্প এবং স্ক্রিপ্টিং ভাষা মত Python, আপনি দক্ষতার সাথে নিদর্শন অনুসন্ধান করতে পারেন এবং পাঠ্য ফাইলগুলিতে পার্শ্ববর্তী প্রসঙ্গ লাইনগুলি প্রদর্শন করতে পারেন। এই পদ্ধতিগুলি ডেটা বিশ্লেষণ এবং ব্যাখ্যা করার আপনার ক্ষমতা বাড়ায়, লগ বিশ্লেষণ, ডিবাগিং এবং ডেটা নিষ্কাশন কাজের জন্য মূল্যবান টুল তৈরি করে।