लिनक्स grep कमांड के 12 व्यावहारिक उदाहरण


क्या आपने कभी किसी फ़ाइल में किसी विशेष स्ट्रिंग या पैटर्न की तलाश के कार्य के साथ सामना किया है, फिर भी कोई विचार नहीं है कि कहां से शुरू करना है? खैर, यहाँ बचाव के लिए संक्षिप्त है!

grep एक शक्तिशाली फ़ाइल पैटर्न खोजक है जो लिनक्स के हर वितरण पर सुसज्जित है। यदि, जो भी कारण से, यह आपके सिस्टम पर स्थापित नहीं है, तो आप इसे आसानी से अपने पैकेज मैनेजर (डेबियन/उबंटू पर एप्ट-गेट और आरएचईएल/सेंटो/फेडोरा पर यम) के माध्यम से स्थापित कर सकते हैं।

$ sudo apt-get install grep         #Debian/Ubuntu
$ sudo yum install grep             #RHEL/CentOS/Fedora

मैंने पाया है कि अपने पैरों को ग्रीप से गीला करने का सबसे आसान तरीका है कि आप सही में गोता लगाएँ और कुछ वास्तविक दुनिया के उदाहरणों का उपयोग करें।

1. फाइल्स को खोजें और खोजें

बता दें कि आपने अभी-अभी अपनी मशीन पर नए उबंटू की एक नई प्रति स्थापित की है, और आप पायथन स्क्रिप्टिंग को एक शॉट देने जा रहे हैं। आप ट्यूटोरियल की तलाश में वेब को डरा रहे हैं, लेकिन आप देखते हैं कि उपयोग में पायथन के दो अलग-अलग संस्करण हैं, और आपको यह पता नहीं है कि उबंटू इंस्टॉलर द्वारा आपके सिस्टम पर कौन सा इंस्टॉल किया गया था, या यदि यह किसी भी मॉड्यूल को स्थापित करता है। बस इस कमांड को चलाएं:

# dpkg -l | grep -i python
ii  python2.7                        2.7.3-0ubuntu3.4                    Interactive high-level object-oriented language (version 2.7)
ii  python2.7-minimal                2.7.3-0ubuntu3.4                    Minimal subset of the Python language (version 2.7)
ii  python-openssl                   0.12-1ubuntu2.1                     Python wrapper around the OpenSSL library
ii  python-pam                       0.4.2-12.2ubuntu4                   A Python interface to the PAM library

सबसे पहले, हमने dpkg –l चलाया, जो आपके सिस्टम पर * .deb संकुल को सूचीबद्ध करता है। दूसरा, हमने उस आउटपुट को grep –i python में पाइप कर दिया, जो सरल बताता है कि "grep पर जाएं और फ़िल्टर करें और उसमें 'python' के साथ सब कुछ लौटाएं।" -I विकल्प-इग्नोरेंस-केस है, क्योंकि grep केस-सेंसिटिव है। –I विकल्प का उपयोग करना एक अच्छी आदत है, जब तक कि आप एक अधिक विशिष्ट खोज को खत्म करने की कोशिश नहीं कर रहे हैं।

2. खोज और फ़िल्टर फ़ाइलें

Grep का उपयोग व्यक्तिगत फ़ाइलों या कई फ़ाइलों के भीतर खोज और फ़िल्टर करने के लिए भी किया जा सकता है। इस परिदृश्य को लें:

आपको अपने अपाचे वेब सर्वर से कुछ परेशानी हो रही है, और आप कुछ मदद मांगने वाले नेट पर कई भयानक मंचों में से एक पर पहुंच गए हैं। जिस तरह की आत्मा आपको जवाब देती है, उसने आपसे अपने/etc/apache2/sites-available/default-sll फ़ाइल की सामग्री पोस्ट करने के लिए कहा है। क्या यह आपके लिए, आपकी मदद करने वाले व्यक्ति और इसे पढ़ने वाले सभी लोगों के लिए आसान नहीं होगा, यदि आप सभी टिप्पणी की गई लाइनों को हटा सकते हैं? खैर आप कर सकते हैं! बस इसे चलाएं:

# grep –v “#”  /etc/apache2/sites-available/default-ssl

–V विकल्प अपने आउटपुट को पलटने के लिए grep को बताता है, जिसका अर्थ है कि मिलान लाइनों को प्रिंट करने के बजाय, विपरीत करें और उन सभी लाइनों को प्रिंट करें जो अभिव्यक्ति से मेल नहीं खाती हैं, इस मामले में, # टिप्पणी की गई लाइनें।

3. सभी .mp3 फ़ाइलें केवल खोजें

स्टेपआउट से छानने के लिए ग्रीप बहुत उपयोगी हो सकता है। उदाहरण के लिए, मान लें कि आपके पास विभिन्न स्वरूपों के एक समूह में संगीत फ़ाइलों से भरा पूरा फ़ोल्डर है। आप सभी * .mp3 फ़ाइलों को कलाकार JayZ से ढूंढना चाहते हैं, लेकिन आप किसी भी रीमिक्स किए गए ट्रैक को नहीं चाहते हैं। Grep पाइप के एक जोड़े के साथ एक खोज आदेश का उपयोग कर चाल करेंगे:

# find . –name “*.mp3” | grep –i JayZ | grep –vi “remix”

इस उदाहरण में, हम * .mp3 एक्सटेंशन के साथ सभी फ़ाइलों को प्रिंट करने के लिए खोज का उपयोग कर रहे हैं, इसे फ़िल्टर करने के लिए grep –i को पाइपिंग करते हैं और सभी फाइलों को “JayZ” नाम से प्रिंट करते हैं और फिर grep –vi को एक और पाइप फ़िल्टर करते हैं जो फ़िल्टर करता है बाहर और स्ट्रिंग (किसी भी मामले में) "रीमिक्स" के साथ सभी फ़ाइलनामों को प्रिंट नहीं करता है।

4. खोज स्ट्रिंग के पहले या बाद में लाइनों की संख्या प्रदर्शित करें

विकल्पों में से एक और जोड़ी हैं –A-और -B स्विच, जो मिलान की गई रेखा और संख्या को प्रदर्शित करता है जो या तो खोज स्ट्रिंग से पहले या बाद में आते हैं। जबकि मैन पेज एक अधिक विस्तृत विवरण देता है, मुझे विकल्पों को याद रखना सबसे आसान लगता है जैसे –A = के बाद, और –B = से पहले:

# ifconfig | grep –A 4 eth0
# ifconfig | grep  -B 2 UP

5. प्रिंट मैच के आसपास लाइनों की संख्या

Grep का –C विकल्प समान है, लेकिन स्ट्रिंग के पहले या बाद में आने वाली लाइनों को प्रिंट करने के बजाय, यह दोनों दिशाओं में लाइनों को प्रिंट करता है:

# ifconfig | grep –C 2 lo

6. माचिस की संख्या की गणना

शब्द गणना (wc प्रोग्राम) के लिए एक grep स्ट्रिंग को पाइप करने के समान है grep का अंतर्निहित विकल्प इसके लिए भी ऐसा कर सकता है:

# ifconfig | grep –c inet6

7. सर्च फाइल्स गिविंग स्ट्रिंग द्वारा

संकलन त्रुटियों के दौरान फ़ाइलों को डीबग करते समय grep के लिए –n विकल्प बहुत उपयोगी होता है। यह दिए गए खोज स्ट्रिंग की फ़ाइल में लाइन नंबर प्रदर्शित करता है:

# grep –n “main” setup..py

8. सभी निर्देशिकाओं में पुनरावर्ती एक स्ट्रिंग खोजें

यदि आप सभी उपनिर्देशिकाओं के साथ वर्तमान निर्देशिका में एक स्ट्रिंग की खोज करना चाहते हैं, तो आप पुनरावर्ती खोज करने के लिए –r विकल्प निर्दिष्ट कर सकते हैं:

# grep –r “function” *

9. पूरे पैटर्न के लिए खोज करता है

स्ट्रिंग में है पूरे पैटर्न की खोज के लिए –w विकल्प को पास करना। उदाहरण के लिए, उपयोग करना:

# ifconfig | grep –w “RUNNING”

उद्धरणों में पैटर्न वाली लाइन का प्रिंट आउट लेगा। दूसरी ओर, यदि आप कोशिश करते हैं:

# ifconfig | grep –w “RUN”

कुछ भी नहीं लौटाया जाएगा क्योंकि हम एक पैटर्न की खोज नहीं कर रहे हैं, बल्कि एक संपूर्ण शब्द।

10. Gzipped Files में एक स्ट्रिंग खोजें

कुछ उल्लेख का वर्णन grep के व्युत्पन्न हैं। पहला zgrep है, जो zcat के समान है, gzipped फ़ाइलों पर उपयोग के लिए है। यह grep के समान विकल्प लेता है और उसी तरह उपयोग किया जाता है:

# zgrep –i error /var/log/syslog.2.gz

11. फाइलों में नियमित अभिव्यक्ति का मिलान करें

Egrep एक और व्युत्पन्न है जो "विस्तारित वैश्विक नियमित अभिव्यक्ति" के लिए है। यह + पर अतिरिक्त अभिव्यक्ति मेटा-वर्णों को पहचानता है? | तथा()।

स्रोत फ़ाइलों और कोड के अन्य टुकड़ों को खोजने के लिए egrep बहुत उपयोगी है, आवश्यकता उत्पन्न होनी चाहिए। –E विकल्प को निर्दिष्ट करके इसे नियमित grep से प्राप्त किया जा सकता है।

# grep –E

12. एक निश्चित पैटर्न स्ट्रिंग खोजें

Fgrep एक निश्चित पैटर्न स्ट्रिंग के लिए फ़ाइल या फ़ाइलों की सूची खोजता है। यह grep -F के समान है। Fgrep का उपयोग करने का एक सामान्य तरीका यह है कि इसके पैटर्न की एक फ़ाइल पास की जाए:

# fgrep –f file_full_of_patterns.txt file_to_search.txt

यह सिर्फ grep के साथ एक शुरुआती बिंदु है, लेकिन जैसा कि आप शायद देख पा रहे हैं, यह विभिन्न उद्देश्यों के लिए अमूल्य है। हमारे द्वारा लागू की गई सरल एक लाइन कमांड के अलावा, grep का उपयोग शक्तिशाली क्रॉन जॉब्स, और मजबूत शेल स्क्रिप्ट लिखने के लिए किया जा सकता है।

रचनात्मक रहें, मैन पेज में विकल्पों के साथ प्रयोग करें, और अपने स्वयं के उद्देश्यों की सेवा करने वाले संक्षिप्त अभिव्यक्ति के साथ आएं!