अवलोकन
लिनक्स वातावरण में बड़ी टेक्स्ट फ़ाइलों या सिस्टम लॉग का विश्लेषण करते समय grep कमांड एक अनिवार्य टूल है। इस लेख में, हम Ubuntu टर्मिनल में grep चलाने, अपनी पसंद की स्ट्रिंग को तेज़ी से खोजने और आउटपुट परिणामों की सटीक व्याख्या करने की महत्वपूर्ण व्यावहारिक तकनीकों के बारे में जानेंगे।
बेसिक स्ट्रिंग सर्च और केस असंवेदनशील विकल्प (-i)
grep कमांड का अभ्यास करने के लिए एक अलग कार्यक्षेत्र (workspace) बनाने और उसमें जाने के लिए mkdir -p ~/grep_demo && cd ~/grep_demo कमांड चलाएँ।

सर्च परीक्षण के लिए उदाहरण स्ट्रिंग्स वाली एक टेक्स्ट फ़ाइल बनाने के लिए echo -e 'Ubuntu Linux Server\nubuntu desktop\nDebian GNU/Linux' > sample.txt कमांड चलाएँ।

grep कमांड किसी फ़ाइल या टेक्स्ट में किसी विशिष्ट पैटर्न या स्ट्रिंग को खोजती है और मेल खाने वाली पंक्तियों को प्रिंट करती है।
डिफ़ॉल्ट रूप से, यह अंग्रेज़ी के बड़े और छोटे अक्षरों (case sensitivity) में अंतर करती है, इसलिए केवल वही पंक्तियाँ खोजी जाएँगी जो सटीक रूप से Ubuntu से मेल खाती हैं।
⚙️ [प्रमुख विकल्प]
-i : केस संवेदनशीलता को अनदेखा करता है और मेल खाने वाले पैटर्न को खोजता है।-v : केवल उन पंक्तियों को इनवर्ट (उलटा) करके आउटपुट करता है जो निर्दिष्ट पैटर्न से मेल नहीं खाती हैं।-n : मेल खाने वाली सामग्री के साथ पंक्ति संख्या (line number) भी प्रदर्शित करता है।-c : केवल मेल खाने वाली पंक्तियों की कुल संख्या गिनकर आउटपुट करता है।-r : सबडायरेक्टरीज़ के भीतर सभी फ़ाइलों को पुनरावर्ती (recursively) रूप से खोजता है।-l : केवल उन फ़ाइलों के नाम सूचीबद्ध करता है जिनमें मेल खाने वाली सामग्री मौजूद है।-E : विस्तारित रेगुलर एक्सप्रेशन (ERE) का उपयोग करके खोजता है।

-i विकल्प जोड़ने पर यह केस संवेदनशीलता को अनदेखा करके खोज करता है।
इसलिए, कैपिटल लेटर से शुरू होने वाली Ubuntu और स्मॉल लेटर से शुरू होने वाली ubuntu वाली दोनों पंक्तियाँ आउटपुट में दिखाई देंगी।

पंक्ति संख्या प्रदर्शन (-n) और गैर-मेल खाने वाली पंक्तियों की उलटी खोज (-v)
लॉग विश्लेषण अभ्यास के लिए वर्चुअल लॉग डेटा जनरेट करने हेतु echo -e 'INFO: Service started\nERROR: Connection timeout\nINFO: Request handled\nERROR: Disk full' > app.log कमांड चलाएँ।

-n विकल्प का उपयोग करने पर सर्च पैटर्न से मेल खाने वाली पंक्तियों के साथ पंक्ति संख्या भी प्रदर्शित होती है।
चूँकि ERROR स्ट्रिंग वाली पंक्ति संख्या और सामग्री एक साथ आउटपुट होती हैं, इसलिए आप समस्या के स्थान की तुरंत पहचान कर सकते हैं।

-v विकल्प का उपयोग करने पर केवल वे पंक्तियाँ इनवर्ट होकर आउटपुट होती हैं जो निर्दिष्ट पैटर्न से मेल नहीं खाती हैं।
सामान्य स्थिति दर्शाने वाली INFO प्रविष्टियों को छोड़कर, केवल त्रुटि-संबंधी पंक्तियों को फ़िल्टर करके देखा जा सकता है।

सबडायरेक्टरी पुनरावर्ती खोज (-r) और केवल फ़ाइल नाम आउटपुट (-l)
पुनरावर्ती खोज (recursive search) के अभ्यास के लिए सब-आर्काइव डायरेक्टरी संरचना बनाने हेतु mkdir -p ~/grep_demo/logs/archive कमांड चलाएँ।

सर्च परीक्षण के लिए उपयोग की जाने वाली डेटाबेस एरर लॉग फ़ाइल बनाने के लिए echo 'database error' > ~/grep_demo/logs/db.log कमांड चलाएँ।

सामान्य लॉग की जाँच के लिए कैश लॉग फ़ाइल बनाने हेतु echo 'cache hit' > ~/grep_demo/logs/cache.log कमांड चलाएँ।

सबडायरेक्टरी नेविगेशन परीक्षण के लिए पिछली एरर लॉग फ़ाइल बनाने हेतु echo 'fatal error occurred' > ~/grep_demo/logs/archive/old.log कमांड चलाएँ।

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

-l विकल्प जोड़कर इसे -rl के रूप में चलाने पर, मेल खाने वाली सामग्री के बजाय केवल उन फ़ाइलों के पथ की सूची आउटपुट होती है जिनमें वह पैटर्न मौजूद है।
यह कई लॉग फ़ाइलों में से केवल उन्हीं फ़ाइलों को तुरंत पहचानने के लिए बहुत उपयोगी है जिनमें error हुई है।

खोज परिणामों के आसपास का संदर्भ देखना (-A, -B, -C) और रंग हाइलाइट
चरण-दर-चरण प्रक्रिया की प्रगति और त्रुटि संदर्भ की जाँच का अभ्यास करने के लिए एक नमूना लॉग फ़ाइल बनाने हेतु echo -e 'Step 1: Init\nStep 2: Load Config\nStep 3: Critical Failure\nStep 4: Cleanup\nStep 5: Exit' > process.log कमांड चलाएँ।

-B और -A विकल्पों का उपयोग करने पर मेल खाने वाली पंक्ति के आधार पर क्रमशः पहले (Before) और बाद (After) की निर्दिष्ट संख्या में पंक्तियाँ आउटपुट होती हैं।--color=always विकल्प के साथ मेल खाने वाले शब्द Critical Failure को रंग से हाइलाइट करते हुए, उससे पहले की 1 पंक्ति और बाद की 2 पंक्तियों की जाँच करके त्रुटि होने से पहले और बाद के वर्कफ़्लो को समझा जा सकता है।

-C विकल्प का उपयोग करने पर मेल खाने वाली पंक्ति के आधार पर आगे और पीछे दोनों दिशाओं (Context) की समान संख्या में पंक्तियाँ एक साथ आउटपुट होती हैं।Critical Failure वाली पंक्ति से ठीक पहले की 1 पंक्ति और ठीक बाद की 1 पंक्ति एक साथ प्रदर्शित होती है, जिससे मुख्य संदर्भ को और अधिक संक्षिप्त रूप से देखा जा सकता है।

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