ग्रेप
रेगुलर एक्सप्रेशन के साथ काम करने के लिए हम जिस मुख्य प्रोग्राम का उपयोग करेंगे वह हमारा पुराना दोस्त है, ग्रेप. "ग्रेप" नाम वास्तव में "ग्लोबल रेगुलर एक्सप्रेशन प्रिंट" वाक्यांश से लिया गया है, इसलिए हम इसे देख सकते हैं ग्रेप इसका नियमित अभिव्यक्ति से कुछ लेना-देना है। संक्षेप में, ग्रेप निर्दिष्ट नियमित अभिव्यक्ति से मेल खाने वाले घटना पाठ के लिए पाठ फ़ाइलों की खोज करता है और मानक आउटपुट से मेल खाने वाली किसी भी पंक्ति को आउटपुट करता है।
अब तक, हमने प्रयोग किया है ग्रेप निश्चित तारों के साथ, जैसे:
[मुझे@लिनक्सबॉक्स ~]$ एलएस /यूएसआर/बिन | ग्रेप ज़िप
[मुझे@लिनक्सबॉक्स ~]$ एलएस /यूएसआर/बिन | ग्रेप ज़िप
इसमें सभी फ़ाइलें सूचीबद्ध होंगी / Usr / bin निर्देशिका जिनके नाम में सबस्ट्रिंग "ज़िप" है।
RSI ग्रेप प्रोग्राम इस प्रकार विकल्पों और तर्कों को स्वीकार करता है:
ग्रेप [विकल्पों] regex [फ़ाइल ...]
जहां regex एक नियमित अभिव्यक्ति है।
यहां आमतौर पर उपयोग की जाने वाली चीजों की एक सूची दी गई है ग्रेप विकल्प हैं:
तालिका 19-1: ग्रेप विकल्प
विकल्प विवरण
विकल्प विवरण
-i मामले की अनदेखी करें। अपरकेस और लोअरकेस वर्णों के बीच अंतर न करें. भी निर्दिष्ट किया जा सकता है --मामले की अनदेखी करें.
-v उलटा मिलान. सामान्य रूप से, ग्रेप उन पंक्तियों को प्रिंट करता है जिनमें एक मिलान होता है।
इस विकल्प का कारण बनता है ग्रेप प्रत्येक पंक्ति को मुद्रित करने के लिए जिसमें कोई मिलान नहीं है। भी निर्दिष्ट किया जा सकता है --इनवर्ट-मैच.
-c मिलानों की संख्या प्रिंट करें (या गैर-मिलान हों तो -v विकल्प भी निर्दिष्ट है) पंक्तियों के बजाय। भी निर्दिष्ट किया जा सकता है --गिनती.
-l प्रत्येक फ़ाइल का नाम प्रिंट करें जिसमें पंक्तियों के बजाय मिलान हो। भी निर्दिष्ट किया जा सकता है --फाइल्स-साथ-मैचों.
-L -l विकल्प की तरह, लेकिन केवल उन फ़ाइलों के नाम प्रिंट करें जिनमें मिलान नहीं है। यह भी निर्दिष्ट किया जा सकता है --फ़ाइलें-बिना-मिलान के।
-n फ़ाइल के भीतर पंक्ति की संख्या के साथ प्रत्येक मिलान पंक्ति को उपसर्ग करें। --लाइन-नंबर भी निर्दिष्ट किया जा सकता है।
-h बहु-फ़ाइल खोजों के लिए, फ़ाइल नामों के आउटपुट को दबाएँ। भी निर्दिष्ट किया जा सकता है --no-फ़ाइलनाम.
अधिक पूरी तरह से अन्वेषण करने के लिए ग्रेप, आइए खोजने के लिए कुछ टेक्स्ट फ़ाइलें बनाएं:
ग्रेप
[मुझे@लिनक्सबॉक्स ~]$ ls /bin > dirlist-bin.txt [मुझे@लिनक्सबॉक्स ~]$ ls /usr/bin > dirlist-usr-bin.txt [मुझे@लिनक्सबॉक्स ~]$ ls /sbin > dirlist-sbin.txt [मुझे@लिनक्सबॉक्स ~]$ ls /usr/sbin > dirlist-usr-sbin.txt [मुझे@लिनक्सबॉक्स ~]$ एलएस डार्लिस्ट * .txt
dirlist-bin.txt dirlist-sbin.txt dirlist-usr-sbin.txt dirlist-usr-bin.txt
[मुझे@लिनक्सबॉक्स ~]$ ls /bin > dirlist-bin.txt [मुझे@लिनक्सबॉक्स ~]$ ls /usr/bin > dirlist-usr-bin.txt [मुझे@लिनक्सबॉक्स ~]$ ls /sbin > dirlist-sbin.txt [मुझे@लिनक्सबॉक्स ~]$ ls /usr/sbin > dirlist-usr-sbin.txt [मुझे@लिनक्सबॉक्स ~]$ एलएस डार्लिस्ट * .txt
dirlist-bin.txt dirlist-sbin.txt dirlist-usr-sbin.txt dirlist-usr-bin.txt
हम अपनी फ़ाइलों की सूची की सरल खोज इस प्रकार कर सकते हैं:
[मुझे@लिनक्सबॉक्स ~]$ ग्रेप bzip dirlist*.txt
dirlist-bin.txt:bzip2 dirlist-bin.txt:bzip2recover
[मुझे@लिनक्सबॉक्स ~]$ ग्रेप bzip dirlist*.txt
dirlist-bin.txt:bzip2 dirlist-bin.txt:bzip2recover
इस उदाहरण में, ग्रेप स्ट्रिंग के लिए सभी सूचीबद्ध फ़ाइलें खोजता है बज़िप और फ़ाइल में दो मिलान ढूंढता है dirlist-bin.txt. यदि हम केवल उन फ़ाइलों की सूची में रुचि रखते थे जिनमें मिलानों के बजाय मिलान शामिल थे, तो हम निर्दिष्ट कर सकते थे -l विकल्प:
[मुझे@लिनक्सबॉक्स ~]$ grep -l bzip dirlist*.txt
dirlist-bin.txt
[मुझे@लिनक्सबॉक्स ~]$ grep -l bzip dirlist*.txt
dirlist-bin.txt
इसके विपरीत, यदि हम केवल उन फ़ाइलों की सूची देखना चाहते हैं जिनमें कोई मेल नहीं है, तो हम यह कर सकते हैं:
[मुझे@लिनक्सबॉक्स ~]$ grep -L bzip dirlist*.txt
dirlist-usr-bin.txt dirlist-usr-sbin.txt
[मुझे@लिनक्सबॉक्स ~]$ grep -L bzip dirlist*.txt
dirlist-usr-bin.txt dirlist-usr-sbin.txt