आसपास की मिलान रेखाओं को प्रदर्शित करने के लिए ग्रेप का उपयोग करना

आसपास की मिलान रेखाओं को प्रदर्शित करने के लिए ग्रेप का उपयोग करना
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"

संदर्भ विकल्पों के साथ ग्रेप का उपयोग करना

संदर्भ के साथ ग्रेप की नकल करने के लिए पायथन स्क्रिप्ट

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. मैं ग्रेप के साथ रेगुलर एक्सप्रेशन का उपयोग कैसे कर सकता हूं?
  10. उपयोग grep -E अधिक जटिल पैटर्न मिलान के लिए विस्तारित नियमित अभिव्यक्तियों को सक्षम करने का विकल्प।
  11. क्या ग्रेप प्रदर्शित मैचों की संख्या को सीमित करने का कोई तरीका है?
  12. हां grep -m किसी संख्या के बाद वाला विकल्प प्रदर्शित मिलानों की संख्या को सीमित करता है।
  13. क्या मैं ग्रेप खोजों को केस-असंवेदनशील बना सकता हूँ?
  14. का उपयोग grep -i विकल्प खोज को केस-असंवेदनशील बनाता है।
  15. मैं ग्रेप के साथ एकाधिक फ़ाइलों में पैटर्न कैसे खोजूं?
  16. आप एकाधिक फ़ाइल नाम प्रदान कर सकते हैं या वाइल्डकार्ड का उपयोग कर सकते हैं grep एक साथ कई फाइलों को खोजने के लिए।

प्रासंगिक खोजों के लिए उन्नत ग्रेप विकल्पों की खोज

बुनियादी से परे grep -C विकल्प, कई उन्नत grep पैटर्न की खोज करते समय और आसपास की रेखाओं को प्रदर्शित करते समय विकल्प और भी अधिक नियंत्रण और लचीलापन प्रदान करते हैं। ऐसा ही एक विकल्प है grep -A, जो प्रत्येक मैच के बाद पंक्तियों की एक निर्दिष्ट संख्या प्रदर्शित करता है। यह विशेष रूप से तब उपयोगी हो सकता है जब किसी मैच के बाद का संदर्भ आपके विश्लेषण के लिए अधिक महत्वपूर्ण हो। इसी प्रकार, grep -B प्रत्येक मैच से पहले पंक्तियाँ दिखाता है, जो प्रमुख संदर्भ का एक केंद्रित दृश्य प्रस्तुत करता है। इन विकल्पों को मिलाकर, आप अपनी आवश्यकताओं के अनुरूप आउटपुट तैयार कर सकते हैं।

एक और शक्तिशाली विशेषता भीतर नियमित अभिव्यक्तियों का उपयोग है grep. नियमित अभिव्यक्तियों का लाभ उठाकर, आप अधिक जटिल खोजें कर सकते हैं जो सरल स्ट्रिंग मिलान से परे हैं। उदाहरण के लिए, का उपयोग करना -E विकल्प के साथ grep अधिक व्यापक पैटर्न मिलान क्षमता प्रदान करते हुए, विस्तारित नियमित अभिव्यक्तियों के उपयोग की अनुमति देता है। यह उन परिदृश्यों में उपयोगी है जहां आपको अलग-अलग लंबाई या प्रारूपों के साथ पैटर्न का मिलान करने की आवश्यकता होती है। इसके अतिरिक्त, grep का समर्थन करता है --color विकल्प, जो आउटपुट में मिलान किए गए पैटर्न को हाइलाइट करता है, जिससे टेक्स्ट के बड़े ब्लॉक के भीतर मिलान को दृष्टिगत रूप से पहचानना आसान हो जाता है।

मुख्य बिंदुओं का सारांश

जोड़ने से grep विकल्प और स्क्रिप्टिंग भाषाएँ जैसे Python, आप कुशलतापूर्वक पैटर्न की खोज कर सकते हैं और टेक्स्ट फ़ाइलों में आसपास की संदर्भ पंक्तियों को प्रदर्शित कर सकते हैं। ये विधियाँ डेटा का विश्लेषण और व्याख्या करने की आपकी क्षमता को बढ़ाती हैं, जिससे वे लॉग विश्लेषण, डिबगिंग और डेटा निष्कर्षण कार्यों के लिए मूल्यवान उपकरण बन जाते हैं।