regex - Egrep और grep के बीच अंतर




(2)

grep कमांड का उपयोग किसी फाइल में आवश्यक पैटरन को खोजने के लिए किया जाता है, हमारे पास '\' रखकर अलग-अलग मेटा-कैरेक्टर हैं

egrep grep -E के बराबर है, जिसे विस्तारित किया जाता है नियमित अभिव्यक्ति {,}, (,),;, |,? अभिव्यक्ति में '\' दिए बिना मेटा-वर्णों के रूप में

fgrep का उपयोग निश्चित स्ट्रिंग को खोजने के लिए किया जाता है, जो grep -F के बराबर है

test.txt
फ़ाइल
टाइल
(च | टी) इले
(\ F \ | \ t) इले

grep "(f | t) ile" test.txt
(च | टी) इले

grep "(\ f \ | \ t) ile" test.txt
फ़ाइल
टाइल

egrep "(f | t) ile" test.txt
फ़ाइल
टाइल

egrep "(\ f \ | \ t) ile" test.txt
(च | टी) इले

fgrep "(f | t) ile" test.txt
(च | टी) इले

fgrep "(\ f \ | \ t) ile" test.txt
(\ F \ | \ t) इले

मेरे पास unix में grep और egrep के बारे में एक प्रश्न है।

जैसा कि मैं हाल ही में unix में shell commands अध्ययन कर रहा हूं, मैं जानना चाहता हूं कि grep और egrep के बीच क्या अंतर हैं।

मुझे लगता है कि हम नियमित अभिव्यक्ति के साथ grep और egrep का उपयोग कर सकते हैं। हालाँकि, मुझे इन दोनों आदेशों के बीच कुछ अलग मिला:

^ , grep और egrep का वही अर्थ है जो यह पता लगा रहा है कि लाइनों में बहुत शुरुआत में दिए गए सामान हैं।

हालाँकि, के लिए | , grep, बिना बैक स्लैश के सामने | , का मतलब चरित्र | , और अगर मैं इसके पीछे एक बैक स्लैश डालता हूं, तो यह उस लाइन को खोजने के विशेष अर्थ को चालू करता है जिसमें या तो उसके सामने और उसके पीछे सामान होता है। लेकिन, उदाहरण के लिए, यह विपरीत है। | grep और \| के बाद के अर्थ हैं \| इसका उपयोग करने पर grep का पूर्व अर्थ है।

किसी और को कृपया समझा सकते हैं क्यों?


हाँ मुझसे हो सकता था।

egrep कमांड grep बाइनरी के लिए शॉर्टकट है, लेकिन एक अपवाद के साथ, जब grep को grep बाइनरी के रूप में आमंत्रित किया जाता है, तो grep बाइनरी इसके आंतरिक तर्क को सक्रिय करता है क्योंकि इसे grep -E कहा जाता है।

अंतर यह है कि -E विकल्प विस्तारित regexp पैटर्न के उपयोग को सक्षम करता है। यह आपको ऐसे मेटा-प्रतीकों का उपयोग करने की अनुमति देगा + ? या | । वे सामान्य वर्ण नहीं हैं जैसे हम शब्दों या फ़ाइलनामों में होते थे, लेकिन स्वयं grep बाइनरी के लिए नियंत्रण आदेश। इस प्रकार, | का अर्थ है तार्किक या।

इसलिए, उदाहरण के लिए, आप निर्देशिका में फ़ाइलों को सूचीबद्ध करना चाहते हैं और केवल उन्हीं को देखना चाहते हैं जिनमें "mp4" या "avi" सीमाएं हैं। egrep साथ आप करेंगे:

ls | egrep "mp4|avi"

इस उदाहरण में | OR या कमांड की तरह कार्य करता है, यह ls उन सभी नामों के आउटपुट को लेगा जिसमें "mp4" या "avi" स्ट्रिंग्स शामिल हैं। यदि आप इसे सादे grep कमांड के साथ चलाते हैं तो आपको कुछ नहीं मिलेगा, क्योंकि grep ऐसी चीज़ को नहीं जानता है | कमांड और यह "mp4 | avi" पूरे टेक्स्ट स्ट्रिंग ( पाइप सिंबल के साथ) को खोजेगा। जैसे अगर आपके पास है |MPG|cool-guy.q2.stats फाइल को अपने डायर में रखें, तो आप इसे पाइप से खोजते हुए सादे grep के साथ प्राप्त करेंगे।

तो, इसीलिए आपको बचना चाहिए | grep के समान प्रभाव को प्राप्त करने के लिए अपने egrep कमांड में। भागने से विशेष अर्थ का पर्दा उठेगा | grep बाइनरी के लिए कमांड।







grep