Grep

Grep

मध्यम

परिचय

आपने एक स्थानीय पुस्तकालय में नौकरी कर ली है, जहाँ आप पुरानी किताबों के संग्रह को व्यवस्थित करने में मदद करते हैं। छात्र पाठक अक्सर अपने टर्म पेपर में उद्धृत करने के लिए आधे-अधूरे याद रह गए उद्धरण ढूँढते रहते हैं। हर किताब को शुरू से अंत तक खुद पढ़ने के बजाय, आप एक छोटा टूल बनाने का फैसला करते हैं, जो उन किताबों को स्कैन करके इन अधूरे उद्धरणों को खोज निकाले।

निर्देश

फाइलों में ऐसी लाइनें खोजिए जो सर्च स्ट्रिंग से मेल खाती हों, और मेल खाने वाली सभी लाइनें लौटाइए।

Unix का grep कमांड फाइलों में ऐसी लाइनें खोजता है जो किसी रेगुलर एक्सप्रेशन से मेल खाती हों। आपको एक सरल grep कमांड बनाना है, जो तय स्ट्रिंग खोज सके।

grep कमांड तीन आर्गुमेंट लेता है:

  1. वह स्ट्रिंग जिसे खोजना है।
  2. कमांड का व्यवहार बदलने के लिए शून्य या अधिक फ्लैग।
  3. एक या अधिक फाइलें जिनमें खोजना है।

इसके बाद यह दी गई फाइलों को उसी क्रम में पढ़ता है जिस क्रम में उनके नाम दिए गए हैं। फिर उन लाइनों को ढूँढ़ता है जिनमें सर्च स्ट्रिंग मौजूद हो, और अंत में उन लाइनों को उसी क्रम में लौटाता है जिस क्रम में वे मिली थीं। जब एक से अधिक फाइलों में खोजा जाता है, तो हर मेल खाने वाली लाइन के आगे उस फाइल का नाम और एक कोलन (':') लगा दिया जाता है।

फ्लैग

grep कमांड निम्नलिखित फ्लैग का समर्थन करता है:

  • -n आउटपुट की हर लाइन के आगे उसकी संख्या और एक कोलन (':') जोड़िए, और संख्या को फाइल के नाम के बाद रखिए (अगर नाम मौजूद हो)।
  • -l केवल उन फाइलों के नाम प्रदर्शित कीजिए जिनमें कम से कम एक मेल खाने वाली लाइन हो।
  • -i छोटे-बड़े अक्षरों में अंतर किए बिना मिलान कीजिए।
  • -v प्रोग्राम का व्यवहार उलट दीजिए, यानी उन सभी लाइनों को इकट्ठा कीजिए जो मेल नहीं खातीं।
  • -x केवल उन्हीं लाइनों को खोजिए जिनमें सर्च स्ट्रिंग पूरी लाइन से मेल खाती हो।

grep करना है या नहीं, यही तो सवाल है

हालाँकि इस अभ्यास को सिर्फ grep को आर्गुमेंट देकर बहुत आसानी से हल किया जा सकता है, फिर भी इसे सिर्फ bash की मदद से कीजिए। इस Exercism ट्रैक का उद्देश्य यह सीखना है कि समस्याएँ हल करने के लिए bash के बिल्ट-इन कमांड कैसे इस्तेमाल किए जाएँ।

इस अभ्यास को हल करने के लिए आपको यह सब करना होगा:

  • कमांड लाइन के आर्गुमेंट पढ़ना: इसके लिए getopts काम आता है।
  • किसी फाइल की लाइनों पर एक-एक करके चलना: इसके लिए bash FAQ #1 देखिए
  • रेगुलर एक्सप्रेशन से मिलान करना: bash यह काम [[ ... ]] के अंदर =~ ऑपरेटर से कर सकता है

GitHub के ज़रिए संपादित करें यह लिंक एक नई विंडो या टैब में खुलता है
Bash Exercism

Grep शुरू करने के लिए तैयार हैं?

Exercism पर साइन अप कीजिए और Bash को 97 अभ्यास तथा असली इंसानों से मिलने वाली मेंटरिंग के साथ सीखिए और उसमें महारत हासिल कीजिए, वह भी बिल्कुल मुफ्त।