अदल-बदल
विस्तारित रेगुलर एक्सप्रेशन सुविधाओं में से पहली जिस पर हम चर्चा करेंगे उसे कहा जाता है अदल-बदल, जो वह सुविधा है जो अभिव्यक्तियों के एक सेट के बीच से मिलान की अनुमति देती है। जिस प्रकार ब्रैकेट अभिव्यक्ति एक एकल वर्ण को निर्दिष्ट वर्णों के सेट से मिलान करने की अनुमति देती है, उसी प्रकार अल्टरनेशन स्ट्रिंग्स या अन्य नियमित अभिव्यक्तियों के एक सेट से मिलान की अनुमति देता है।
प्रदर्शित करने के लिए, हम उपयोग करेंगे ग्रेप के साथ संयोजन के रूप में गूंज. सबसे पहले, आइए एक सादे पुराने स्ट्रिंग मिलान का प्रयास करें:
[मुझे@लिनक्सबॉक्स ~]$ प्रतिध्वनि "एएए" | ग्रेप एएए
एएए
[मुझे@लिनक्सबॉक्स ~]$ इको "बीबीबी" | ग्रेप एएए
[मुझे@लिनक्सबॉक्स ~]$
[मुझे@लिनक्सबॉक्स ~]$ प्रतिध्वनि "एएए" | ग्रेप एएए
एएए
[मुझे@लिनक्सबॉक्स ~]$ इको "बीबीबी" | ग्रेप एएए
[मुझे@लिनक्सबॉक्स ~]$
एक बहुत सीधा उदाहरण, जिसमें हम आउटपुट को पाइप करते हैं गूंज में ग्रेप और परिणाम देखें. जब कोई मिलान होता है, तो हम उसे मुद्रित रूप में देखते हैं; जब कोई मिलान नहीं होता, तो हमें कोई परिणाम नहीं दिखता।
अब हम वर्टिकल-बार मेटाकैरेक्टर द्वारा दर्शाया गया विकल्प जोड़ेंगे:
[मुझे@लिनक्सबॉक्स ~]$ प्रतिध्वनि "एएए" | ग्रेप -ई 'एएए|बीबीबी'
एएए
[मुझे@लिनक्सबॉक्स ~]$ इको "बीबीबी" | ग्रेप -ई 'एएए|बीबीबी'
BBB
[मुझे@लिनक्सबॉक्स ~]$ इको "सीसीसी" | ग्रेप -ई 'एएए|बीबीबी'
[मुझे@लिनक्सबॉक्स ~]$
[मुझे@लिनक्सबॉक्स ~]$ प्रतिध्वनि "एएए" | ग्रेप -ई 'एएए|बीबीबी'
एएए
[मुझे@लिनक्सबॉक्स ~]$ इको "बीबीबी" | ग्रेप -ई 'एएए|बीबीबी'
BBB
[मुझे@लिनक्सबॉक्स ~]$ इको "सीसीसी" | ग्रेप -ई 'एएए|बीबीबी'
[मुझे@लिनक्सबॉक्स ~]$
यहां हम रेगुलर एक्सप्रेशन देखते हैं 'एएए|बीबीबी', जिसका अर्थ है "किसी भी स्ट्रिंग का मिलान करें।" एएए या स्ट्रिंग BBB।” ध्यान दें कि चूंकि यह एक विस्तारित सुविधा है, इसलिए हमने इसे जोड़ा है -E विकल्प ग्रेप (हालाँकि हम इसका उपयोग कर सकते थे उदा इसके बजाय प्रोग्राम), और हमने शेल को पाइप ऑपरेटर के रूप में वर्टिकल-बार मेटाकैरेक्टर की व्याख्या करने से रोकने के लिए उद्धरण चिह्नों में नियमित अभिव्यक्ति संलग्न की। विकल्प दो विकल्पों तक सीमित नहीं है:
[मुझे@लिनक्सबॉक्स ~]$ प्रतिध्वनि "एएए" | ग्रेप -ई 'एएए|बीबीबी|सीसीसी'
एएए
[मुझे@लिनक्सबॉक्स ~]$ प्रतिध्वनि "एएए" | ग्रेप -ई 'एएए|बीबीबी|सीसीसी'
एएए
अन्य नियमित अभिव्यक्ति तत्वों के साथ प्रत्यावर्तन को संयोजित करने के लिए, हम प्रत्यावर्तन को अलग करने के लिए () का उपयोग कर सकते हैं:
[मुझे@लिनक्सबॉक्स ~]$ grep -Eh '^(bz|gz|zip)' dirlist*.txt
[मुझे@लिनक्सबॉक्स ~]$ grep -Eh '^(bz|gz|zip)' dirlist*.txt
यह अभिव्यक्ति हमारी सूचियों में उन फ़ाइल नामों से मेल खाएगी जो "bz", "gz" या "zip" से शुरू होते हैं। यदि हमने कोष्ठक छोड़ दिया होता, तो इस नियमित अभिव्यक्ति का अर्थ:
[मुझे@लिनक्सबॉक्स ~]$ grep -Eh '^bz|gz|zip' dirlist*.txt
[मुझे@लिनक्सबॉक्स ~]$ grep -Eh '^bz|gz|zip' dirlist*.txt
"bz" से शुरू होने वाले किसी भी फ़ाइल नाम से मेल खाने के लिए परिवर्तन या होता है "जीजेड" या होता है "ज़िप"।