लिनक्स में 20 उपयोगी egrep कमांड उदाहरण
संक्षिप्त: इस गाइड में, हम egrep कमांड के कुछ व्यावहारिक उदाहरणों पर चर्चा करेंगे। इस गाइड का पालन करने के बाद, उपयोगकर्ता लिनक्स में अधिक कुशलता से टेक्स्ट सर्च करने में सक्षम होंगे।
क्या आप कभी निराश हुए हैं क्योंकि आपको लॉग में आवश्यक जानकारी नहीं मिल रही है? एक बड़े डेटा सेट से आवश्यक जानकारी निकालना एक जटिल और समय लेने वाला कार्य है।
चीजें वास्तव में चुनौतीपूर्ण हो जाती हैं यदि ऑपरेटिंग सिस्टम सही उपकरण प्रदान नहीं करता है और यहां आपको बचाने के लिए लिनक्स आता है। लिनक्स विभिन्न टेक्स्ट-फ़िल्टरिंग उपयोगिताओं जैसे sed, cut, आदि प्रदान करता है।
हालाँकि, egrep लिनक्स में टेक्स्ट प्रोसेसिंग के लिए सबसे शक्तिशाली और आमतौर पर उपयोग की जाने वाली उपयोगिताओं में से एक है, और हम egrep कमांड के कुछ उदाहरणों पर चर्चा करने जा रहे हैं।
लिनक्स में egrep कमांड को grep कमांड के परिवार द्वारा पहचाना जाता है, जिसका उपयोग फाइलों में किसी विशेष पैटर्न को खोजने और मिलान करने के लिए किया जाता है। यह grep -E (grep Extended regex) के समान ही काम करता है, लेकिन यह ज्यादातर किसी विशेष फ़ाइल या यहां तक कि लाइन को लाइन में खोजता है या दी गई फ़ाइल में लाइन को प्रिंट करता है।
egrep कमांड का सिंटैक्स इस प्रकार है:
$ egrep [OPTIONS] PATTERNS [FILES]
आइए एक उदाहरण का उपयोग करने के लिए निम्नलिखित सामग्री के साथ एक नमूना टेक्स्ट फ़ाइल बनाएं:
$ cat sample.txt
यहां, हम देख सकते हैं कि टेक्स्ट फ़ाइल तैयार है। आइए अब कुछ सामान्य उदाहरणों पर चर्चा करें जिनका उपयोग दैनिक आधार पर किया जा सकता है।
आइए एक साधारण पैटर्न-मिलान उदाहरण के साथ शुरू करें, जहां हम नीचे दिए गए कमांड का उपयोग एक नमूना.txt फ़ाइल में पेशेवर
स्ट्रिंग की खोज के लिए कर सकते हैं:
$ egrep professionals sample.txt
यहां, हम देख सकते हैं कि कमांड उस लाइन को प्रिंट करता है जिसमें निर्दिष्ट पैटर्न होता है।
हम मिलान किए गए पैटर्न को हाइलाइट करके आउटपुट को अधिक जानकारीपूर्ण बना सकते हैं। इसे प्राप्त करने के लिए, हम egrep कमांड के --color
विकल्प का उपयोग कर सकते हैं। उदाहरण के लिए, निम्न कमांड लाल रंग में पेशेवरों
टेक्स्ट को हाइलाइट करेगा:
$ egrep --color=auto professionals sample.txt
यहां, हम देख सकते हैं कि वही आउटपुट पिछले वाले की तुलना में अधिक जानकारीपूर्ण है। साथ ही, हम आसानी से पहचान सकते हैं कि पेशेवर
शब्द दो बार दोहराया गया है।
अधिकांश लिनक्स सिस्टम पर उपरोक्त सेटिंग को डिफ़ॉल्ट रूप से निम्नलिखित उपनाम का उपयोग करके सक्षम किया जाता है:
$ alias egrep='egrep –color=auto'
egrep कमांड कई फाइलों को एक तर्क के रूप में स्वीकार करता है, जो हमें कई फाइलों में एक विशेष पैटर्न की खोज करने की अनुमति देता है। इसे एक उदाहरण से समझते हैं।
सबसे पहले, sample.txt फ़ाइल की एक प्रति बनाएँ:
$ cp sample.txt sample-copy.txt
अब, दोनों फाइलों में पैटर्न पेशेवर
खोजें:
$ egrep professionals sample.txt sample-copy.txt
उपरोक्त उदाहरण में, हम आउटपुट में फ़ाइल का नाम देख सकते हैं, जो उस फ़ाइल से मेल खाने वाली रेखा का प्रतिनिधित्व करता है।
कभी-कभी हमें केवल यह पता लगाने की आवश्यकता होती है कि फ़ाइल में पैटर्न मौजूद है या नहीं। यदि हाँ, तो उसका वर्तमान कितनी पंक्तियों में है? ऐसे मामलों में, हम कमांड के -c
विकल्प का उपयोग कर सकते हैं।
उदाहरण के लिए, नीचे दिया गया कमांड आउटपुट के रूप में 1 दिखाएगा क्योंकि पेशेवर
शब्द केवल एक लाइन में मौजूद है।
$ egrep -c professionals sample.txt 1
पिछले उदाहरण में, हमने देखा कि -c
विकल्प पैटर्न की घटनाओं की संख्या की गणना नहीं करता है। उदाहरण के लिए, शब्द पेशेवर
एक ही पंक्ति में दो बार प्रकट होता है लेकिन -c
विकल्प इसे केवल एक ही मिलान के रूप में मानता है।
ऐसे मामलों में, हम केवल मिलान किए गए पैटर्न को प्रिंट करने के लिए कमांड के -o
विकल्प का उपयोग कर सकते हैं। उदाहरण के लिए, नीचे दिया गया कमांड पेशेवरों
शब्द को दो अलग-अलग पंक्तियों में दिखाएगा:
$ egrep -o professionals sample.txt
अब, wc कमांड का उपयोग करके लाइनों को गिनें:
$ egrep -o professionals sample.txt | wc -l
उपरोक्त उदाहरण में, हमने विशेष पैटर्न की घटनाओं की संख्या की गणना करने के लिए egrep और wc कमांड के संयोजन का उपयोग किया है।
डिफ़ॉल्ट रूप से, egrep केस-संवेदी तरीके से पैटर्न मिलान करता है। इसका अर्थ है शब्द - हम, हम, हम और हम को अलग-अलग शब्दों के रूप में माना जाता है। हालांकि, हम -i
विकल्प का उपयोग करके केस-असंवेदनशील खोज को लागू कर सकते हैं।
उदाहरण के लिए, नीचे दिए गए कमांड पैटर्न में we
और We
टेक्स्ट के लिए मैच सफल होगा:
$ egrep -i we sample.txt
पिछले उदाहरण में, हमने देखा कि egrep कमांड आंशिक मिलान करता है। उदाहरण के लिए, जब हमने we
टेक्स्ट की खोज की तो पैटर्न मिलान अन्य टेक्स्ट के लिए भी सफल रहा। जैसे वेब, वेबसाइट, और थे।
इस सीमा को पार करने के लिए, हम -w
विकल्प चुन सकते हैं, जो पूरे शब्द मिलान को लागू करता है।
$ egrep -w we sample.txt
अब तक, हमने egrep कमांड का उपयोग उन पंक्तियों को प्रिंट करने के लिए किया है जिनमें दिया गया पैटर्न मौजूद है। हालांकि, कभी-कभी हम ऑपरेशन को विपरीत तरीके से करना चाहते हैं।
उदाहरण के लिए, हम उन पंक्तियों को प्रिंट करना चाह सकते हैं जिनमें दिया गया पैटर्न मौजूद नहीं है। हम इसे -v
विकल्प की मदद से हासिल कर सकते हैं:
$ egrep -v we sample.txt
यहां, हम देख सकते हैं कि कमांड उन सभी पंक्तियों को प्रिंट करता है जिनमें we
टेक्स्ट नहीं है।
हम लाइन नंबरिंग को सक्षम करने के लिए कमांड के -n
विकल्प का उपयोग कर सकते हैं, जो पैटर्न मिलान के सफल होने पर आउटपुट में लाइन नंबर दिखाता है। यह सरल ट्रिक आउटपुट को अधिक सार्थक बनाती है।
$ egrep -n professionals sample.txt
उपरोक्त आउटपुट में, हम देख सकते हैं कि professionals
शब्द 5वीं पंक्ति में मौजूद है।
शांत मोड में, egrep कमांड मिलान किए गए पैटर्न को प्रिंट नहीं करता है। इसलिए हमें यह पहचानने के लिए कमांड के रिटर्न वैल्यू का उपयोग करना होगा कि पैटर्न मिलान सफल हुआ या नहीं।
हम शांत मोड को सक्षम करने के लिए कमांड के -q
विकल्प का उपयोग कर सकते हैं, जो शेल स्क्रिप्ट लिखते समय काम आता है।
$ egrep -q professionals sample.txt $ egrep -q non-existing-pattern sample.txt
इस उदाहरण में, शून्य रिटर्न मान पैटर्न की उपस्थिति को इंगित करता है जबकि गैर-शून्य मान पैटर्न की अनुपस्थिति को इंगित करता है।
कभी-कभी, मिलान किए गए पैटर्न के चारों ओर कुछ पंक्तियाँ दिखाना समझ में आता है। ऐसे परिदृश्यों के लिए, हम कमांड के -B
विकल्प का उपयोग कर सकते हैं, जो मिलान पैटर्न से पहले N लाइनों को प्रदर्शित करता है।
उदाहरण के लिए, नीचे दिया गया कमांड उस लाइन को प्रिंट करेगा जिसके लिए पैटर्न मैच सफल होता है और साथ ही इससे पहले 2 लाइनें।
$ egrep -B 2 -n professionals sample.txt
इस उदाहरण में, हमने लाइन नंबर प्रदर्शित करने के लिए -n
विकल्प का उपयोग किया है।
इसी तरह, हम पैटर्न मिलान के बाद लाइन प्रदर्शित करने के लिए कमांड के -A
विकल्प का उपयोग कर सकते हैं। उदाहरण के लिए, नीचे दिया गया कमांड उस लाइन को प्रिंट करेगा जिसके लिए पैटर्न मैच सफल होता है और साथ ही अगली 2 लाइनें भी।
$ egrep -A 2 -n professionals sample.txt
इसके अलावा, egrep कमांड -C
विकल्प का समर्थन करता है जो -A
और -B
विकल्पों की कार्यक्षमता को जोड़ता है, जो प्रदर्शित करता है मिलान पैटर्न से पहले और बाद की रेखाएँ।
$ egrep -C 2 -n professionals sample.txt
जैसा कि पहले चर्चा की गई है, हम कई फाइलों पर पैटर्न मिलान कर सकते हैं। हालाँकि, स्थिति मुश्किल हो जाती है जब फाइलें कई उप-निर्देशिकाओं के तहत मौजूद होती हैं और हम उन सभी को कमांड तर्क के रूप में पास करते हैं।
ऐसे मामलों में, हम निम्न उदाहरण में दिखाए गए अनुसार -r
विकल्प का उपयोग करके पुनरावर्ती तरीके से पैटर्न मिलान कर सकते हैं।
सबसे पहले, 2 उप-निर्देशिकाएँ बनाएँ और उनमें sample.txt फ़ाइल कॉपी करें:
$ mkdir -p dir1/dir2 $ cp sample.txt dir1/ $ cp sample.txt dir1/dir2/
अब, खोज ऑपरेशन को पुनरावर्ती तरीके से करते हैं:
$ egrep -r professionals dir1
उपरोक्त उदाहरण में, हम देख सकते हैं कि dir1/dir2/sample.txt और dir1/sample.txt फ़ाइलों के लिए पैटर्न मिलान सफल हुआ।
हम पंक्ति के अंत को छोड़कर किसी एक वर्ण से मेल खाने के लिए डॉट (.)
वर्ण का उपयोग कर सकते हैं। उदाहरण के लिए, नीचे दिया गया रेगुलर एक्सप्रेशन टेक्स्ट हर, हैट और हैट से मेल खाता है:
$ egrep "ha." sample.txt
हम पिछले वर्ण के शून्य या अधिक बारंबारता का मिलान करने के लिए तारक (*)
का उपयोग कर सकते हैं। उदाहरण के लिए, नीचे दिया गया रेगुलर एक्सप्रेशन उस टेक्स्ट से मेल खाता है जिसमें एक स्ट्रिंग we
है और उसके बाद b
वर्ण की शून्य या अधिक बारंबारता आती है।
$ egrep "web*" sample.txt
हम पिछले वर्ण की एक या अधिक घटनाओं का मिलान करने के लिए प्लस (+)
का उपयोग कर सकते हैं। उदाहरण के लिए, नीचे दिया गया रेगुलर एक्सप्रेशन उस टेक्स्ट से मेल खाता है जिसमें स्ट्रिंग we
है और उसके बाद b
वर्ण की कम से कम एक घटना है।
$ egrep "web+" sample.txt
यहां, हम देख सकते हैं कि पैटर्न मिलान शब्दों के लिए सफल नहीं होता है - हम
और थे
, वर्ण b
के अभाव के कारण।
हम कैरेट (^)
का उपयोग लाइन की शुरुआत को दर्शाने के लिए कर सकते हैं। उदाहरण के लिए, नीचे दिया गया रेगुलर एक्सप्रेशन उन पंक्तियों को प्रिंट करता है जो We
टेक्स्ट से शुरू होती हैं:
$ egrep "^We" sample.txt
हम पंक्ति के अंत का प्रतिनिधित्व करने के लिए डॉलर ($)
का उपयोग कर सकते हैं। उदाहरण के लिए, नीचे दिया गया रेगुलर एक्सप्रेशन उन पंक्तियों को प्रिंट करता है जो e.
टेक्स्ट के साथ समाप्त होती हैं:
$ egrep "e.$" sample.txt
खाली लाइन को दर्शाने के लिए हम कैरेट (^)
के तुरंत बाद डॉलर ($)
का उपयोग कर सकते हैं। आइए इसे खाली लाइनों को हटाने के लिए नियमित अभिव्यक्ति में उपयोग करें:
$ egrep -n -v "^$" sample.txt
उपरोक्त आउटपुट में, हम देख सकते हैं कि लाइन नंबर 2, 4, 6, 8 और 10 खाली होने के कारण प्रदर्शित नहीं होते हैं।
इस लेख में, हमने egrep कमांड के कुछ उपयोगी उदाहरणों पर चर्चा की। उत्पादकता में सुधार के लिए इन उदाहरणों का उपयोग दैनिक जीवन में किया जा सकता है।
क्या आप Linux में egrep कमांड के किसी अन्य सर्वश्रेष्ठ उदाहरण के बारे में जानते हैं? हमें नीचे दी गई टिप्पणियों में अपने विचार बताएं।