लिनक्स रेगुलर एक्सप्रेशन ट्यूटोरियल: ग्रिप रेगेक्स उदाहरण

⚡ स्मार्ट सारांश

लिनक्स रेगुलर एक्सप्रेशन विशेष वर्ण अनुक्रम होते हैं जो grep, sed और vi जैसे उपकरणों में डेटा की खोज करते हैं और जटिल पैटर्न का मिलान करते हैं, पाठ को सटीक रूप से फ़िल्टर करने के लिए बुनियादी, अंतराल, विस्तारित और ब्रेस-विस्तार रूपों का उपयोग करते हैं।

  • 🔎 वे क्या हैं: रेगुलर एक्सप्रेशन, जिसे संक्षेप में regexp या regex कहा जाता है, खोज और मिलान के लिए टेक्स्ट पैटर्न का वर्णन करता है।
  • 🧩 बुनियादी सेट: . ^ $ * और \ जैसे प्रतीक एक पैटर्न में वर्णों को एंकर करते हैं, दोहराते हैं और एस्केप करते हैं।
  • 🔢 मध्यान्तर: {n} और {n,m} जैसे कोष्ठक यह नियंत्रित करते हैं कि पूर्ववर्ती अक्षर कितनी बार दोहराया जाता है।
  • विस्तारित: grep -E के साथ, \+ और \? एक या अधिक बार और शून्य या एक बार किसी अक्षर की उपस्थिति का मिलान करते हैं।
  • 🧵 ब्रेस विस्तार: कर्ली ब्रैकेट्स किसी अनुक्रम या अल्पविराम से अलग की गई सूची से कई स्ट्रिंग उत्पन्न करते हैं।
  • जहां उपयोग किया जाता है: grep, sed, tr और vi जैसे उपकरण टेक्स्ट को फ़िल्टर करने के लिए रेगुलर एक्सप्रेशन पर निर्भर करते हैं।
  • 🤖 एआई सहायता: एआई सहायक और गिटहब कोपायलट रेगुलर एक्सप्रेशन पैटर्न को तेजी से उत्पन्न, समझा और डीबग कर सकते हैं।

Linux में grep के साथ नियमित अभिव्यक्तियाँ — बुनियादी, अंतराल और विस्तारित नियमित अभिव्यक्ति के उदाहरण

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

लिनक्स रेगुलर एक्सप्रेशन क्या हैं?

लिनक्स में रेगुलर एक्सप्रेशन विशेष वर्ण होते हैं जो डेटा खोजने और जटिल पैटर्न का मिलान करने में मदद करते हैं। रेगुलर एक्सप्रेशन को संक्षेप में 'regexp' या 'regex' लिखा जाता है। इनका उपयोग कई लिनक्स प्रोग्रामों में किया जाता है, जैसे कि... ग्रेपbash, rename, sed, और भी बहुत कुछ।

नियमित अभिव्यक्तियों के प्रकार

समझने में आसानी के लिए, आइए हम अलग-अलग प्रकार के रेगुलर एक्सप्रेशन को एक-एक करके सीखें। इस पेज में बेसिक, इंटरवल और एक्सटेंडेड रेगुलर एक्सप्रेशन शामिल हैं, और अंत में ब्रेसेस एक्सपेंशन के साथ समाप्त होता है।

बुनियादी नियमित अभिव्यक्तियाँ

रेगुलर एक्सप्रेशन के साथ काम करने वाले कुछ सामान्य रूप से उपयोग किए जाने वाले कमांड tr, sed हैं। viऔर grep। नीचे दी गई तालिका में कुछ बुनियादी रेगुलर एक्सप्रेशन सूचीबद्ध हैं।

चिन्ह विवरण
. किसी भी अक्षर को बदल देता है
^ स्ट्रिंग की शुरुआत से मेल खाता है
$ स्ट्रिंग के अंत से मेल खाता है
* पिछले अक्षर से शून्य या अधिक बार मिलान होता है
\ विशेष वर्णों को दर्शाता है
() नियमित अभिव्यक्तियों को समूहित करें
? ठीक एक अक्षर से मेल खाता है

आइए एक उदाहरण देखते हैं। सबसे पहले, नीचे दिखाए गए अनुसार, किसी मौजूदा फ़ाइल की सामग्री प्रदर्शित करने के लिए cat sample कमांड चलाएँ।

cat sample कमांड का उपयोग करके टर्मिनल में मौजूद फ़ाइल की सामग्री प्रदर्शित करना।

इसके बाद, 'a' अक्षर वाले कंटेंट को खोजें। नीचे दिए गए स्क्रीनशॉट में grep द्वारा 'a' अक्षर वाले सभी शब्दों को दिखाया गया है।

grep कमांड का उपयोग करके सैंपल फ़ाइल में उन पंक्तियों को खोजें जिनमें अक्षर 'a' मौजूद हो।

कैरेट '^' स्ट्रिंग की शुरुआत से मेल खाता है। नीचे दिए गए उदाहरण में 'a' अक्षर से शुरू होने वाली सामग्री को खोजा गया है।

कैरेट एंकर का उपयोग करके grep कमांड चलाएं और केवल उन पंक्तियों से मिलान करें जो अक्षर 'a' से शुरू होती हैं।

केवल उन्हीं पंक्तियों को फ़िल्टर किया जाता है जो 'a' अक्षर से शुरू होती हैं। जिन पंक्तियों में 'a' अक्षर शुरू में नहीं होता, उन्हें अनदेखा कर दिया जाता है।

आइए एक और उदाहरण देखते हैं। नीचे दिया गया स्क्रीनशॉट फिर से किसी पंक्ति के अंत के आधार पर फ़िल्टर करने से पहले नमूना फ़ाइल की सामग्री को दर्शाता है।

फ़िल्टर करने से पहले नमूना फ़ाइल की सामग्री दिखाई गई है, जिसमें उन पंक्तियों को शामिल नहीं किया गया है जिनके अंत में अक्षर 't' आता है।

नीचे दिखाए गए अनुसार '$' एंकर का उपयोग करके केवल उन पंक्तियों का चयन करें जो अक्षर 't' से समाप्त होती हैं।

डॉलर एंकर का उपयोग करके grep कमांड चलाएं और केवल उन पंक्तियों का चयन करें जो अक्षर t से समाप्त होती हैं।

अंतराल नियमित अभिव्यक्ति

ये अभिव्यक्तियाँ किसी स्ट्रिंग में किसी वर्ण की उपस्थिति की संख्या निर्दिष्ट करती हैं। इन्हें नीचे सूचीबद्ध किया गया है।

अभिव्यक्ति विवरण
{एन} 'n' बार प्रकट होने वाले पूर्ववर्ती वर्ण से सटीक रूप से मेल खाता है
{एन, एम} 'n' बार प्रकट होने वाले पूर्ववर्ती वर्ण से मेल खाता है, परंतु m से अधिक नहीं
{एन, } पूर्ववर्ती वर्ण से केवल तभी मेल खाता है जब वह 'n' बार या अधिक बार प्रकट होता है

उदाहरण के लिए, उन सभी पंक्तियों को फ़िल्टर करें जिनमें 'p' अक्षर मौजूद है। नीचे दिया गया स्क्रीनशॉट मिलान वाली पंक्तियों को दर्शाता है।

grep का उपयोग करके नमूना फ़ाइल में मौजूद उन पंक्तियों को फ़िल्टर किया जाता है जिनमें 'p' अक्षर मौजूद होता है।

अब जांच लें कि स्ट्रिंग में 'p' अक्षर ठीक दो बार, एक के बाद एक दिखाई देता है। इसके लिए सिंटैक्स इस प्रकार है:

cat sample | grep -E p\{2}

अंतराल मैच का परिणाम नीचे दिखाया गया है।

grep -E अंतराल अभिव्यक्ति जो अक्षर p को ठीक दो बार प्रकट करने से मेल खाती है

नोट: आपको इन नियमित अभिव्यक्तियों के साथ -E जोड़ना होगा।

विस्तारित नियमित अभिव्यक्तियाँ

ये रेगुलर एक्सप्रेशन एक से अधिक एक्सप्रेशन को जोड़ते हैं। इनमें से कुछ इस प्रकार हैं:

अभिव्यक्ति विवरण
\+ पिछले वर्ण की एक या अधिक घटनाओं से मेल खाता है
\? पिछले वर्ण की शून्य या एक घटना से मेल खाता है

उदाहरण के लिए, 't' अक्षर के सभी उदाहरणों को खोजें। नीचे दिया गया स्क्रीनशॉट परिणाम दिखाता है।

grep कमांड का उपयोग करके सैंपल फ़ाइल में उन सभी पंक्तियों को खोजें जिनमें 't' अक्षर मौजूद हो।

मान लीजिए कि आप उन पंक्तियों को फ़िल्टर करना चाहते हैं जहाँ अक्षर 'a' अक्षर 't' से पहले आता है। आप नीचे दिए गए कमांड का उपयोग कर सकते हैं:

cat sample|grep "a\+t"

आउटपुट निम्नलिखित स्क्रीनशॉट में दिखाया गया है।

grep विस्तारित अभिव्यक्ति जो एक या अधिक 'a' वर्णों के बाद आने वाले 't' से मेल खाती है

ब्रेस विस्तार

कर्ली ब्रैकेट के विस्तार के लिए सिंटैक्स या तो एक क्रम होता है या कर्ली ब्रैकेट '{}' के अंदर आइटमों की अल्पविराम से अलग की गई सूची होती है। क्रम में शुरुआती और अंतिम आइटम दो बिंदुओं '..' से अलग किए जाते हैं।

कुछ उदाहरण नीचे दिए गए हैं।

अनुक्रम और सूची से कई स्ट्रिंग उत्पन्न करने के लिए ब्रेस विस्तार का उपयोग करके इको कमांड

ऊपर दिए गए उदाहरणों में, इको कमांड ब्रेसेस एक्सपेंशन का उपयोग करके स्ट्रिंग बनाता है, जिससे एक ही पैटर्न से कई स्ट्रिंग उत्पन्न होती हैं।

अक्सर पूछे जाने वाले प्रश्न

grep डिफ़ॉल्ट रूप से बुनियादी रेगुलर एक्सप्रेशन का उपयोग करता है। egrep विस्तारित एक्सप्रेशन को सक्षम बनाता है (grep -E के समान), और fgrep बिना रेगुलर एक्सप्रेशन के निश्चित स्ट्रिंग से मेल खाता है (grep -F)। आधुनिक GNU grep, egrep और fgrep को अप्रचलित के रूप में चिह्नित करता है, इसलिए grep -E और grep -F को प्राथमिकता दें।

कैरेक्टर क्लास वर्णों की श्रेणी से मेल खाते हैं। ब्रैकेट एक्सप्रेशन जैसे [az] एक रेंज से मेल खाते हैं, जबकि पॉसिक्स क्लास जैसे [[:alpha:]], [[:digit:]] और [[:space:]] अक्षर, संख्या और रिक्त स्थान से मेल खाते हैं। ये पैटर्न को पठनीय और विभिन्न लोकेशंस में पोर्टेबल बनाए रखते हैं।

उदाहरण के लिए, -i विकल्प जोड़ें, जैसे grep -i “hello” sample। यह Hello, HELLO और hello तीनों से मेल खाता है। -i के बिना, रेगुलर एक्सप्रेशन केस-सेंसिटिव होते हैं, इसलिए एक अपरकेस अक्षर और उसका लोअरकेस रूप दो अलग-अलग अक्षर माने जाते हैं।

शेल वाइल्डकार्ड (ग्लोबिंग) फ़ाइलनामों का विस्तार करते हैं, जहाँ * का अर्थ है कोई भी अक्षर और ? का अर्थ है एक अक्षर। रेगुलर एक्सप्रेशन फ़ाइलों के अंदर मौजूद टेक्स्ट से मेल खाते हैं, जहाँ * का अर्थ है पिछले अक्षर की शून्य या उससे अधिक संख्या। एक ही प्रतीक का अर्थ प्रत्येक संदर्भ में अलग-अलग होता है।

उदाहरण के लिए, -o विकल्प का उपयोग करें, जैसे grep -o “a\+t” sample। पूरी पंक्ति को प्रिंट करने के बजाय, grep केवल उस भाग को प्रिंट करता है जो पैटर्न से मेल खाता है, प्रति पंक्ति एक मिलान। यह उदाहरण के लिए उपयोगी है।tracईमेल या नंबर जैसे मानों को शामिल करना।

पाइप चिह्न के साथ अल्टरनेशन का प्रयोग करें। एक्सटेंडेड मोड में, grep -E “cat|dog” sample कमांड उन पंक्तियों से मेल खाता है जिनमें cat या dog शब्द मौजूद हैं। बेसिक मोड में, आपको इसे एस्केप करके grep “cat\|dog” sample लिखना होगा। अल्टरनेशन कमांड एक साथ कई पैटर्न खोजने की सुविधा देता है।

कृत्रिम बुद्धिमत्ता सहायक सरल अंग्रेजी विवरण को कार्यशील रेगुलर एक्सप्रेशन में बदल सकते हैं, किसी जटिल पैटर्न का अर्थ समझा सकते हैं और मिलान विफल होने पर समाधान सुझा सकते हैं। मशीन लर्निंग उपकरण बड़ी लॉग फाइलों में दोहराए जाने वाले पैटर्न का भी पता लगा सकते हैं, जिन्हें हाथ से लिखना थकाऊ होगा।

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

इस पोस्ट को संक्षेप में इस प्रकार लिखें: