आपने एक स्थानीय पुस्तकालय में नौकरी कर ली है, जहाँ आप पुरानी किताबों के संग्रह को व्यवस्थित करने में मदद करते हैं। छात्र पाठक अक्सर अपने टर्म पेपर में उद्धृत करने के लिए आधे-अधूरे याद रह गए उद्धरण ढूँढते रहते हैं। हर किताब को शुरू से अंत तक खुद पढ़ने के बजाय, आप एक छोटा टूल बनाने का फैसला करते हैं, जो उन किताबों को स्कैन करके इन अधूरे उद्धरणों को खोज निकाले।
फाइलों में ऐसी लाइनें खोजिए जो सर्च स्ट्रिंग से मेल खाती हों, और मेल खाने वाली सभी लाइनें लौटाइए।
Unix का grep कमांड फाइलों में ऐसी लाइनें खोजता है जो किसी रेगुलर एक्सप्रेशन से मेल खाती हों। आपको एक सरल grep कमांड बनाना है, जो तय स्ट्रिंग खोज सके।
grep कमांड तीन आर्गुमेंट लेता है:
इसके बाद यह दी गई फाइलों को उसी क्रम में पढ़ता है जिस क्रम में उनके नाम दिए गए हैं। फिर उन लाइनों को ढूँढ़ता है जिनमें सर्च स्ट्रिंग मौजूद हो, और अंत में उन लाइनों को उसी क्रम में लौटाता है जिस क्रम में वे मिली थीं। जब एक से अधिक फाइलों में खोजा जाता है, तो हर मेल खाने वाली लाइन के आगे उस फाइल का नाम और एक कोलन (':') लगा दिया जाता है।
grep कमांड निम्नलिखित फ्लैग का समर्थन करता है:
-n आउटपुट की हर लाइन के आगे उसकी संख्या और एक कोलन (':') जोड़िए, और संख्या को फाइल के नाम के बाद रखिए (अगर नाम मौजूद हो)।-l केवल उन फाइलों के नाम प्रदर्शित कीजिए जिनमें कम से कम एक मेल खाने वाली लाइन हो।-i छोटे-बड़े अक्षरों में अंतर किए बिना मिलान कीजिए।-v प्रोग्राम का व्यवहार उलट दीजिए, यानी उन सभी लाइनों को इकट्ठा कीजिए जो मेल नहीं खातीं।-x केवल उन्हीं लाइनों को खोजिए जिनमें सर्च स्ट्रिंग पूरी लाइन से मेल खाती हो।यह लागू कीजिए:
grep ( pattern flags files -- lines )pattern सर्च स्ट्रिंग है, flags शून्य या अधिक फ्लैग स्ट्रिंग ("-n", "-l", "-i", "-v" और "-x") का ऐरे है, और files एक या अधिक फाइल नामों का ऐरे है। जो लाइनें मैच करती हैं, उन्हें स्ट्रिंग के ऐरे के रूप में लौटाइए (फाइल-नाम और लाइन-नंबर के जो प्रीफिक्स माँगे गए हों, उनके साथ)।
जब -l फ्लैग दिया गया हो, तो उन फाइलों के नामों का ऐरे लौटाइए जिनमें कम से कम एक मैच है।
किसी फाइल की लाइनें पढ़ने के लिए file-lines को एक एनकोडिंग दीजिए:
USING: io.encodings.utf8 io.files ;
"iliad.txt" utf8 file-lines
! => { "Achilles sing, O Goddess! Peleus' son;" ... }
तीनों फिक्स्चर फाइलें (iliad.txt, midsummer-night.txt और paradise-lost.txt) अभ्यास के साथ वर्किंग डायरेक्टरी में ही आती हैं, इसलिए उन्हें नाम से पढ़ना सीधे काम कर जाता है।
Exercism पर साइन अप कीजिए और Factor को 47 कॉन्सेप्ट163 अभ्यास तथा असली इंसानों से मिलने वाली मेंटरिंग के साथ सीखिए और उसमें महारत हासिल कीजिए, वह भी बिल्कुल मुफ्त।