यह मार्गदर्शिका बताती है कि grep . का उपयोग कैसे करें अनेक शब्द, तार, . खोजने के लिए उपयोगिता और पैटर्न। आप इसे पूरा करने के लिए उपयोग किए गए आदेशों के पूर्ण उदाहरण नीचे पा सकते हैं।
ग्रेप क्या है?
जब हम grep का उल्लेख करते हैं, तो हम कमांड-लाइन फ़ंक्शन . के बारे में बात कर रहे हैं . Grep का मतलब ग्लोबल रेगुलर एक्सप्रेशन प्रिंट है। संक्षेप में, यह उन इनपुट फ़ाइलों की खोज करेगा जो उन पंक्तियों की तलाश में हैं जो एक निश्चित नियमित अभिव्यक्ति से मेल खाते हैं। यह तब मानक आउटपुट के लिए प्रत्येक पंक्ति को लिखकर परिणाम देता है।
Grep उपयोगिता तीन अभिव्यक्ति सिंटैक्स के लिए उपयुक्त है। इन्हें बेसिक, एक्सटेंडेड या पर्ल-संगत के रूप में निर्दिष्ट किया जा सकता है। यदि कोई रेगुलर एक्सप्रेशन सिंटैक्स निर्दिष्ट नहीं है, तो GNY grep खोज पैटर्न को मूल अभिव्यक्तियों के रूप में सेट करेगा।
एकाधिक पैटर्न के लिए Grep
यदि आप एकाधिक पैटर्न खोजना चाहते हैं, तो आप OR ऑपरेटर का उपयोग कर सकते हैं, जिसे वैकल्पिक ऑपरेटर कहा जाता है। यह ऑपरेटर/पाइप इस तरह दिखता है:|
यह उपयोगकर्ता को सभी संभावित मैचों को निर्दिष्ट करने में सक्षम करेगा, चाहे वे अभिव्यक्ति सेट या शाब्दिक तार हों। जैसे, कई पैटर्न खोजने के लिए, इनपुट होगा:
$ grep 'first pattern\|second pattern' filename
'पहला पैटर्न ' और 'दूसरा पैटर्न ' आपके द्वारा खोजे जा रहे संभावित पैटर्न द्वारा प्रतिस्थापित किया जाएगा। यह रेगुलर एक्सप्रेशन – ‘पहला पैटर्न\|दूसरा पैटर्न '- हमेशा सिंगल कोट्स में संलग्न होना चाहिए। वैकल्पिक ऑपरेटर के रूप में पाइप प्रतीक समर्थित नहीं है और इस तरह एस्केप (बैकस्लैश .) ) पाइप को अलग तरीके से निर्देश देने के लिए grep को बताने के लिए वर्ण की आवश्यकता होती है।
इच्छित पैटर्न को विस्तारित नियमित अभिव्यक्ति के रूप में निर्दिष्ट करने के लिए, '-e ' या '—विस्तारित-regexp ' इस्तेमाल किया जा सकता है। उदाहरण के लिए:
$ grep -E 'first pattern|second pattern' filename
विस्तारित रेगेक्स में, आपको पाइप से बचने की आवश्यकता नहीं है।
आप फ़ाइल द्वारा खोज सकते हैं, इसलिए प्रस्तुतीकरण.txt के भीतर खोज पैटर्न इस तरह दिख सकते हैं:
$ grep -E 'first pattern|second pattern' presentation.txt
आउटपुट उन स्ट्रिंग्स को दिखाएगा जिन्हें आप हाइलाइट करना चाहते हैं।
यदि आप जिस फ़ाइल को खोज रहे हैं वह किसी अन्य निर्देशिका में है, तो आपको पूर्ण फ़ाइल पथ का उपयोग करके उस विशिष्ट निर्देशिका में खोज करने के लिए grep को निर्देश देना होगा। उदाहरण के लिए:
$ grep -E 'first pattern|second pattern' /home/presentation.txt
एकाधिक स्ट्रिंग के लिए Grep
पैटर्न के सबसे बुनियादी शाब्दिक तार हैं। कई स्ट्रिंग्स को खोजने के लिए, आप इन्हें grep कमांड के बाद दर्ज करेंगे। कल्पना कीजिए कि हम 'एक . खोज रहे हैं ', 'दो ', और 'तीन '। यह ऐसा दिखाई दे सकता है:
$ grep 'one\|two\|three'
उस आदेश का पालन करें उस फ़ाइल के साथ जिसमें आप खोज रहे हैं। यदि आप विस्तारित रेगुलर एक्सप्रेशन का उपयोग करके खोज कर रहे हैं, तो आप अनिवार्य रूप से '\ . को हटा रहे हैं '। उदाहरण के लिए:
$ grep -E 'one|two|three'
केस संवेदनशीलता पर ध्यान न दें
कमांड 'grep' केस सेंसिटिव है। पत्र मामले को अनदेखा करने के लिए, '-i . के साथ आह्वान करें ' या '—इग्नोर-केस ' विकल्प। उदाहरण के लिए:
$ grep -i 'one\|two\|three'
एक से अधिक मैचों की संख्या प्रदर्शित करना
यदि आप एक लॉग फ़ाइल में हैं और यह जानना चाहते हैं कि क्या चेतावनी और त्रुटि संदेशों की संख्या बढ़ रही है, लेकिन पूरी तरह से विस्तृत परिणाम देखे बिना, आप '-c' का उपयोग कर सकते हैं '। myapp.log . में अनेक मिलानों की गणना करने के लिए फ़ाइल, यह इस तरह दिख सकती है:
grep -c 'one\|two\|three' /var/log/myapp.log
विशिष्ट फ़ाइल प्रकारों में एकाधिक पैटर्न तैयार करें
एक निश्चित फ़ाइल प्रकार में एकाधिक तार खोजे जा सकते हैं। यह आपको खोज करने की अनुमति देता है, उदाहरण के लिए, एक निर्देशिका के भीतर सभी पाठ फ़ाइलें या सभी लॉगफ़ाइलें। फ़ाइल नाम के बजाय फ़ाइल एक्सटेंशन के साथ तारांकन का उपयोग करना grep को निर्देश देगा। त्रुटि संदेशों के लिए उपरोक्त उदाहरण का उपयोग करते हुए, सभी लॉग फ़ाइलों को देखने से ऐसा दिखाई दे सकता है:
grep -c 'one\|two\|three' /var/log/*.log
एकाधिक मिलानों के लिए पुनरावर्ती खोज करना
grep का उपयोग केवल वर्तमान निर्देशिका में उपयोग में तारक के साथ खोज करेगा। यदि आपको सभी उपनिर्देशिकाओं को शामिल करने की आवश्यकता है, तो '-R' विकल्प नियोजित किया जा सकता है:
grep -R 'one\|two\|three' /var/log/*.log
यह तब निर्दिष्ट var/log/ निर्देशिका और उपनिर्देशिकाओं में पाई गई सभी फ़ाइलों के परिणाम लौटाएगा।
सटीक मिलान के लिए grep का उपयोग करना
'grep' कमांड उन सभी परिणामों को प्रदर्शित करेगा जहां स्ट्रिंग भी एम्बेडेड है और न केवल सटीक मिलान। उदाहरण के लिए, 'वैल्यू' की खोज करते समय यह उन पंक्तियों को प्रिंट करेगा जिनमें 'वैल्यू' और 'वैल्यूड' भी शामिल हैं। यदि आप पूरे शब्द के केवल सटीक मिलान वाली पंक्तियों को वापस करना चाहते हैं, तो आप '-w . का उपयोग कर सकते हैं ' या '—शब्द-regexp '। यदि आप 'एक . के सटीक मिलान खोज रहे हैं तो ऐसा लग सकता है ', 'दो ', और 'तीन ':
$ grep -w 'one\|two\|three'
शब्द वर्णों में अल्फ़ान्यूमेरिक शामिल हैं, इसलिए 0-9 और a-z प्लस अंडरस्कोर वर्ण हैं। किसी अन्य को गैर-शब्द वर्ण माना जाता है।