परिचय
लिनक्स grep कमांडचा उपयोग इनपुट फिल्टरिंगसाठी केला जातो.
जीआरईपी म्हणजे ग्लोबल रेग्युलर एक्सप्रेशन प्रिंटर आणि म्हणूनच ते प्रभावीपणे वापरण्यासाठी, तुम्हाला रेग्युलर एक्स्प्रेशन बद्दल काही ज्ञान असावे.
या लेखात, मी तुम्हाला अनेक उदाहरणे दाखवणार आहे जे तुम्हाला grep कमांड समजून घेण्यास मदत करेल.
09 ते 01
GREP चा वापर करून फाइलमध्ये स्ट्रिंग शोधण्याकरिता
कल्पना करा की तुमच्याजवळ पुस्तके असलेली एक पुस्तक आहे ज्यात मुलांच्या खालील पुस्तके आहेत:
- रॉबिन हूड
- लिटल रेड राइडिंग हूड
- पीटर पॅन
- गोल्डिलाक्स आणि तीन अस्वल
- स्नो व्हाइट आणि सात ड्वार्फ
- पिनोचियो
- हॅट मध्ये मांजर
- तीन लहान डुकरांना
- ग्रेफॅलो
- चार्ली आणि द चॉकलेट फॅक्टरी
सर्व पुस्तके शोधण्यासाठी "The" शीर्षकाने आपण खालील वाक्यरचना वापरत आहात:
grep पुस्तके
खालील परिणाम परत मिळतील:
- गोल्डिलाक्स आणि तीन अस्वल
- स्नो व्हाइट आणि सात ड्वार्फ
- हॅट मध्ये मांजर
- तीन लहान डुकरांना
- ग्रेफॅलो
- चार्ली आणि द चॉकलेट फॅक्टरी
प्रत्येक बाबतीत, "द" हा शब्द हायलाइट केला जाईल.
लक्षात घ्या शोध केस संवेदनशील आहे म्हणून जर शीर्षकापैकी एक "" "ऐवजी" असेल तर तो परत आला नसता.
केस दुर्लक्ष करण्यासाठी आपण खालील स्विच जोडू शकता:
पुस्तके grep --ignore-case
तुम्ही खालील प्रमाणे -i स्विच वापरू शकता:
पुस्तके grep -i
02 ते 09
वाइल्डकार्ड वापरून फाइलमध्ये स्ट्रिंग शोधा
Grep आदेश खूप शक्तिशाली आहे. आपण परिणाम फिल्टर करण्यासाठी तंत्र जुळणारी तंत्र वापरु शकता.
या उदाहरणात, आपण वाइल्डकार्ड वापरून फाइलमधील स्ट्रिंग शोध कसा करावा हे मी दाखवेन.
अशी कल्पना करा की आपल्याकडे खालील स्कॉटिश ठिकाण नावाच्या नावाची एक फाईल आहे:
एबरडीन
दांभिकता
aberlour
इनव्हर्यूरी
इनव्हरनेस
न्यूबर्ग
नवीन हरण
नवीन गॅलोवे
ग्लासगो
एडिनाब्रो
जर आपणास नावासह सर्व स्थाने निम्न सिंटॅक्स वापरायचे असतील तर:
grep inver * ठिकाणे
तारांकन (*) वाइल्डकार्ड 0 किंवा बर्याच साठी आहे. म्हणून जर तुमच्यामध्ये इनव्हर नावाची जागा किंवा एखादी जागा म्हटले गेले असेल तर दोघांनाही परत मिळेल.
आपण वापरत असलेले आणखी एक वाइल्डकार्ड ही कालावधी (.) आहे. आपण हे एका एकल अक्षराने जुळण्यासाठी वापरू शकता.
grep inver.r ठिकाणे
वरील आदेशला इनव्हर्यूरी आणि इन्व्हररीय म्हणतात असे ठिकाण सापडतील पण त्यांना अयोग्यरीता सापडणार नाही कारण एका वेळी एकाच वाइल्डकार्डमध्ये फक्त दोन आरच्या दरम्यान एकच वाइल्डकार्ड असू शकते.
कालबाह्य वाइल्डकार्ड उपयुक्त आहे परंतु आपण शोधत असलेल्या मजकूराचा भाग म्हणून आपल्यास एक असल्यास समस्या उद्भवू शकतात.
उदा. डोमेन नेमच्या या यादीत पाहा
- linux.about.com
- pcsupport.about.com
- mp3.about.com
- minecraft.about.com
- androidgames.about.com
- netforbeginners.about.com
- dailylinuxuser.com
- google.co.uk
- google.au
- direct.gov.uk
आपण खालील सिंटॅक्स वापरून फक्त शोधू शकता त्या सर्व about.com शोधा
* डोमेन नेम बद्दल * grep
सूचीमध्ये खालील नावात असेल तर वरील आदेश खाली पडेल:
- dailylinuxuser.com/about.html
आपण असे करू शकता, खालील सिंटॅक्स वापरून पहा:
grep * about.com डोमेन नेम
खालील नावांसह डोमेन नसल्यास हे ठीक काम करेल:
aboutycom.com
About.com या शब्दाचा खरोखर शोध घेण्याकरता खाली दिलेल्या डॉट्सना सुटका करणे आवश्यक आहे:
grep * about \ .com डोमेन नेम
अंतिम वाल्डकार्ड आपल्याला दर्शविण्यासाठी आहे प्रश्न चिन्ह जे शून्य किंवा एक वर्ण आहे.
उदाहरणार्थ:
grep? ber placenames
वरील आदेश aberdeen, aberystwyth किंवा अगदी berwick परत येईल
03 9 0 च्या
Grep चा वापर करुन लाइनच्या सुरूवातीस आणि शेवटी स्ट्रिंग्स शोधा
कॅरेट (^) आणि डॉलर ($) चिन्हामुळे तुम्ही नमुन्यांची सुरुवात आणि ओळींच्या शेवटी शोधू शकता.
अशी कल्पना करा की आपल्याकडे खालील संघांच्या नावांची एक फुटबॉल नाव आहे:
- ब्लॅकपूल
- लिव्हरपूल
- मँचेस्टर सिटी
- लीसेस्टर सिटी
- मँचेस्टर युनायटेड
- न्यूकॅसल युनायटेड
- एफसी युनायटेड ऑफ मँचेस्टर
जर आपल्याला मँचेस्टरशी सुरुवात केलेली सर्व संघांना शोधायची असेल तर आपण खालील सिन्टॅक्स वापरु शकाल:
grep ^ मँचेस्टर संघ
वरील आदेश मँचेस्टर सिटी आणि मँचेस्टर युनायटेडला परत देईल परंतु एफसी युनायटेड ऑफ मँचेस्टरला नाही.
वैकल्पिकरित्या आपण खालील सिंटॅक्स वापरून संयुक्त सह समाप्त सर्व संघ शोधू शकता:
grep युनायटेड $ संघ
वरील कमांड मैनचेस्टर युनायटेड आणि न्यूकॅसल युनायटेड यांना परत देईल परंतु एफसी युनायटेड ऑफ मँचेस्टरला नाही.
04 ते 9 0
Grep चा उपयोग करून जुळविण्याच्या संख्येची मोजणी करणे
आपण grep चा वापर करून एका पॅटर्नशी जुळणारी वास्तविक ओळी परत करू इच्छित नसल्यास परंतु आपण फक्त खालील सिंटॅक्स वापरत आहात हे किती जाणून घेऊ इच्छित आहात:
grep -c नमुना इनपुटफाइल
जर नमुना दोनदा जुळला असेल तर नंबर 2 मिळेल.
05 ते 05
Grep वापरून जुळणार्या सर्व अटी शोधणे
अशी कल्पना करा की आपल्याकडे खालीलप्रमाणे सूचीबद्ध देशांबरोबर ठिकाणाचे नाव आहे:
- एबरडीन स्कॉटलंड
- ग्लासगो स्कॉटलंड
- लिव्हरपूल इंग्लिश
- कॉलवीन बे
- लंडन, इंग्लंड
आपण असे पाहिलेले असावे की colwyn bay कडे त्याच्याशी संबंधित कोणताही देश नाही.
देशांमधील सर्व स्थाने शोधण्यासाठी आपण खालील मांडणी वापरू शकता:
grep जमीन $ ठिकाणी
कोल्विन बे खाली वगळता सर्व परिणाम होईल.
हे स्पष्टपणे केवळ जमिनीवर असलेल्या ठिकाणी (क्वचितच वैज्ञानिक) काम करते.
आपण खालील सिंटॅक्स वापरून निवड रद्द करू शकता:
grep -v जमीन $ ठिकाणे
हे सर्व ठिकाण जे जमिनीवर संपत नाही अशा ठिकाणी शोधेल.
06 ते 9 0
Grep चा वापर करून फायलींमध्ये रिक्त लाइन्स कसे शोधावे
कल्पना करा की तुमच्याजवळ इनपुट फाइल आहे जी तिस-या पक्षाद्वारे वापरली जाते जी फाईल वाचताना थांबते जेव्हा ती खालीलप्रमाणे रिकामी ओळ शोधते:
- एबरडीन स्कॉटलंड
- इनव्हरनेस स्कॉटलँड
- लिव्हरपूल इंग्लिश
- कॉलवीन बे वेल्स
जेव्हा अर्ज लिव्हरपूल नंतर लाईनवर पोहोचतो तेव्हा हा अर्थ वाचणे थांबेल की कॉल्विन बे पूर्णपणे चुकत नाही.
खालील वाक्यरचना वापरून रिक्त ओळी शोधण्याकरिता तुम्ही grep चा वापर करू शकता:
^ ^ places
दुर्दैवाने हे विशेषतः उपयोगी नाही कारण ते फक्त रिक्त ओळी परत करते.
आपण खालीलप्रमाणे फाईल वैध असल्याचे पाहण्यासाठी चेकच्या रूपात रिक्त ओळींची संख्या घेऊ शकता:
grep -c ^ $ places
तथापि आपण रिक्त रेषा असलेल्या रेखा संख्या जाणून घेण्यासाठी अधिक उपयुक्त होऊ शकता जेणेकरून आपण त्यांना पुनर्स्थित करु शकता. आपण असे आदेश देऊन करू शकता:
grep -n ^ $ places
09 पैकी 07
Grep वापरुन अपरकेस किंवा लोअरकेस वर्णांचे स्ट्रिंग शोधणे
Grep वापरल्याने आपण खालील सिंटॅक्स वापरून अप्परकेस अक्षरे मध्ये फाइलमधील कोणत्या ओळी ओळखू शकतो ते ठरवा:
grep '[AZ]' फाइलनाव
चौकोन कंस [] आपल्याला वर्णांची श्रेणी निश्चित करू देतात. वरील उदाहरणामध्ये ए आणि जेड यामधील कोणत्याही वर्णाशी जुळते.
म्हणून लोअरकेस वर्णांशी जुळण्यासाठी आपण खालील मांडणी वापरू शकता:
grep '[az]' फाइलनाव
आपण केवळ अक्षरे आणि इतर अंकीय चिन्ह जुळत नसल्यास खालील सिंटॅक्स वापरु शकता:
grep '[a-zA-Z]' फाइलनाव
आपण याप्रमाणे क्रमांकांसह असे करू शकता:
grep '[0- 9]' फाइलनाव
09 ते 08
Grep चा वापर करून पुनरावृत्ती नमुने शोधणे
पुनरावृत्त नमुना शोधण्यासाठी आपण कुरुष्ठ ब्रॅकेट {} वापरू शकता.
अशी कल्पना करा की आपल्याजवळ पुढीलप्रमाणे एक फोन नंबर आहे.
- 055-1234
- 055-4567
- 555-1545
- 444-0167
- 444-0854
- 454 9 2234
- x44-1234
आपल्याला माहित आहे की संख्येचा पहिला भाग तीन अंक असणे आवश्यक आहे आणि आपण या पॅटर्नशी जुळत नसलेली ओळी शोधू इच्छित आहात.
मागील उदाहरणावरून आपल्याला माहित आहे की [0- 9] एका फाइलमध्ये सर्व संख्या परत करते.
या उदाहरणामध्ये आपल्याला पाहिजे असलेली रेषा तीन संख्यांसह सुरू होते, त्यानंतर हायफन (-) आपण हे खालील वाक्यरचना वापरून करू शकता:
grep "^ [0-9] [0-9] [0- 9] -" संख्या
मागील उदाहरणेवरून आपल्याला माहित आहे की कॅरेट (^) चा अर्थ खालील ओळीने सुरू होणे आवश्यक आहे.
[0- 9] 0 आणि 9 या दरम्यान कितीही संख्येचा शोध घेईल. कारण यात तीन वेळा समावेश आहे. शेवटी हायफन हे दर्शवण्यासाठी एक हायफन आहे की हायफनला तीन नंबर यशस्वी करावे लागतील.
कर्ली ब्रॅकेटचा वापर करुन आपण खालील लहान शोध करू शकता:
grep "^ [0-9] \ {3 \} -" अंक
स्लॅश {ब्रॅकेटच्या बाहेर पडू शकतो जेणेकरून ते रेग्युलर एक्सप्रेशनच्या रूपात कार्य करते परंतु थोडक्यात सांगायचे म्हणजे [0- 9] {3} म्हणजे 0 ते 9 3 या दरम्यान कोणत्याही संख्या.
खालील प्रमाणे कर्ली ब्रॅकेट्सचा वापर केला जाऊ शकतो:
{5,10}
{5,}
{5,10} म्हणजे ज्याचे शोधले गेले त्या वर्णाने कमीतकमी 5 वेळा पुनरावृत्ती करणे आवश्यक आहे परंतु 10 पेक्षा जास्त नाही. परंतु {5,} याचा अर्थ असा आहे की अक्षराने किमान 5 वेळा पुनरावृत्त करणे आवश्यक आहे परंतु ते त्या पेक्षा जास्त असू शकते.
09 पैकी 09
Grep चा वापर करून इतर कमांडस् वरील आउटपुट वापरणे
आतापर्यंत आम्ही व्यक्तिगत फाइल्समध्ये नमुना जुळवून पाहिले आहे परंतु grep इतर कमांडस्च्या आऊटपुटचा वापर करू शकतो कारण नमुना जुळणीसाठी इनपुट.
याचे एक चांगले उदाहरण ps कमांड वापरत आहे जे सक्रीय कार्यपध्दती दर्शविते.
उदाहरणार्थ, खालील आदेश चालवा:
ps -ef
आपल्या सिस्टमवरील सर्व चालू असलेल्या प्रक्रिया प्रदर्शित केल्या जातील.
आपण खालीलप्रमाणे एखाद्या विशिष्ट कार्यप्रणालीसाठी grep चा वापर करु शकता:
ps -ef | grep फायरफॉक्स