नियमित अभिव्यक्ति कई अलग-अलग स्वादों में आती हैं। आप जो दिखा रहे हैं वह एक पर्ल-रेगुलर एक्सप्रेशन (PCRE, "पर्ल कम्पेटिबल रेगुलर एक्सप्रेशन") है।
grepPOSIX नियमित अभिव्यक्ति करता है। ये मूल नियमित अभिव्यक्तियाँ हैं (BRE) और विस्तारित नियमित अभिव्यक्तियाँ (ERE, यदि विकल्प के grepसाथ प्रयोग किया जाता है -E)। मैनुअल re_formatया regexउसके समान या जो कुछ भी आपके grepमैनुअल को संदर्भित करता है, उसे अपने सिस्टम, या POSIX मानक ग्रंथों से देखें जो मैं अभी जुड़ा हुआ हूं।
यदि आप जीएनयू का उपयोग करते हैं grep, तो आप grepजीएनयू- grepविशिष्ट -Pविकल्प के साथ पर्ल-जैसे नियमित अभिव्यक्तियों का उपयोग करने में सक्षम होंगे ।
यह भी ध्यान दें कि लाइनें डिफ़ॉल्ट रूप से grepलौटती हैं , लाइनों से सब्सट्रिंग नहीं। फिर से, जीएनयू grep(और कुछ अन्य grepकार्यान्वयन) के साथ, आप -oकेवल बिट (ओं) को प्राप्त करने के लिए विकल्प का उपयोग कर सकते हैं जो प्रत्येक पंक्ति से दिए गए अभिव्यक्ति से मेल खाते हैं।
ध्यान दें कि दोनों -Pऔर -oअमानक एक्सटेंशन हैं की POSIX विनिर्देशनgrep ।
यदि आप GNU का उपयोग नहीं कर रहे हैं grep, तो आप sedस्ट्रिंग prefixऔर पंक्ति के अंत के बीच बिट प्राप्त करने के बजाय उपयोग कर सकते हैं :
sed -n 's/.*prefix\(.*\)/\1/p' file
यह क्या करता है केवल उन पंक्तियों को प्रिंट करना है जो sedदिए गए प्रतिस्थापन को लागू करने का प्रबंधन करता है। प्रतिस्थापन पूरे लाइन को बदल देगा जो अभिव्यक्ति से मेल खाता है (जो कि एक BRE है), इसके टुकड़े के साथ जो स्ट्रिंग के बाद होता है prefix।
ध्यान दें कि यदि prefixएक पंक्ति में कई उदाहरण हैं , तो sedभिन्नता पिछले एक के बाद स्ट्रिंग लौटा देगी , जबकि GNU grepभिन्नता पहले एक के बाद स्ट्रिंग को लौटा देगी (जिसमें अन्य उदाहरण शामिल होंगे prefix)।
sedसमाधान सभी यूनिक्स सिस्टम के लिए पोर्टेबल होगा।