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

परीक्षण फ़ाइलों को अलग रखने के लिए /tmp के अंदर एक समर्पित वर्कस्पेस तैयार करते हैं और सीधे उसी डायरेक्टरी में प्रवेश करते हैं:

सर्च ऑपरेशन्स के परीक्षण हेतु विभिन्न लॉग स्तरों (INFO, WARN, ERROR, FATAL) से युक्त एक डमी फ़ाइल app.log जनरेट करते हैं:

मूल टेक्स्ट फ़ाइल को हटाए बिना उसका bz2 आर्काइव तैयार करने के लिए -k (keep) फ़्लैग के साथ कंप्रेशन रन करें:

तैयार आर्काइव की पुष्टि और उसका आकार जांचने के लिए डायरेक्टरी लिस्टिंग देखें:

बिना एक्सट्रैक्ट किए bz2 फ़ाइल में टेक्स्ट खोजना
सर्च ऑपरेशन निष्पादित करने के लिए लैब डायरेक्टरी में अपनी उपस्थिति सुनिश्चित करें:

bzegrep के बुनियादी सिंटैक्स की मदद से app.log.bz2 फ़ाइल से सीधे ERROR स्ट्रिंग वाली पंक्तियां निकालें। बिना किसी मैन्युअल डीकंप्रेशन के बैकग्राउंड स्ट्रीम से तुरंत परिणाम स्क्रीन पर आ जाते हैं:

केस-इंसेंसिटिव मैचिंग के लिए -i विकल्प जोड़ें। उदाहरण के लिए, लोअरकेस में warn देने पर भी लॉग में दर्ज अपरकेस WARN इवेंट्स आसानी से फ़िल्टर हो जाते हैं:

समस्या निवारण (troubleshooting) के दौरान इवेंट की सटीक स्थिति जानने के लिए -n फ़्लैग लगाएं, जिससे आउटपुट में मूल फ़ाइल का लाइन नंबर भी साथ दिखता है:

एक्सटेंडेड रेगुलर एक्सप्रेशन (ERE) द्वारा जटिल पैटर्न सर्च
अगले चरण के अभ्यास के लिए वर्कस्पेस एनवायरनमेंट में वापस आएं:

ERE की प्रमुख विशेषता पाइप (|) ऑपरेटर का सीधा समर्थन है। बिना किसी एस्केप कैरेक्टर के एक साथ कई कीवर्ड्स जैसे ERROR या FATAL से मेल खाने वाले सभी क्रिटिकल इवेंट्स को एक साथ कैप्चर किया जा सकता है:

विशिष्ट टाइमस्टैम्प फ़ॉर्मैट (YYYY-MM-DD) से शुरू होने वाली और चेतावनियों या त्रुटियों वाली पंक्तियों को अलग करने के लिए परिष्कृत रेगुलर एक्सप्रेशन पैटर्न लागू करें:

सामान्य रूटीन डेटा को फ़िल्टर करने के लिए इनवर्ट-मैच फ़्लैग -v लगाएं, जिससे सभी सामान्य INFO संदेश हट जाएंगे और केवल ध्यान देने योग्य चेतावनियां या विफलताएं ही बचेंगी:

एक साथ कई कंप्रेस्ड फ़ाइलों की स्कैनिंग और परिणाम फ़िल्टरिंग
मल्टीपल फ़ाइल हैंडलिंग के लिए कार्यशील निर्देशिका में बने रहें:

कई आर्काइव फ़ाइलों पर एक साथ क्वेरी चलाने के लिए एक दूसरी डमी फ़ाइल worker.log तैयार करते हैं:

इस नए डेटासेट को भी कंप्रेस करके bz2 प्रारूप में बदल लेते हैं:

वाइल्डकार्ड (*.bz2) की सहायता से सभी आर्काइव फ़ाइलों की समानांतर जांच करते समय आउटपुट में फ़ाइल का नाम अनिवार्य रूप से जोड़ने के लिए -H विकल्प का प्रयोग करें:

विस्तृत लॉग पंक्तियों के बजाय केवल उन फ़ाइलों की सूची प्राप्त करने के लिए जिनमें विशिष्ट त्रुटि मौजूद है, -l (files-with-matches) का उपयोग करें:

त्रुटियों की आवृत्ति या वॉल्यूम का त्वरित विश्लेषण करने हेतु मैचिंग पंक्तियों की कुल संख्या गिनने के लिए -c फ़्लैग लगाएं:

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