नियमित अभिव्यक्ति कई अलग-अलग स्वादों में आती हैं। आप जो दिखा रहे हैं वह एक पर्ल-रेगुलर एक्सप्रेशन (PCRE, "पर्ल कम्पेटिबल रेगुलर एक्सप्रेशन") है।
grep
POSIX नियमित अभिव्यक्ति करता है। ये मूल नियमित अभिव्यक्तियाँ हैं (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
समाधान सभी यूनिक्स सिस्टम के लिए पोर्टेबल होगा।