लाइनों के बजाय फ़ाइल के अंतिम एन बाइट्स को कैसे पूंछ / grep / जागृत करें


14

मेरे पास एक एप्लिकेशन है जो एक सादे पाठ लॉग फ़ाइल (myapp.log) पर लॉग इन कर रहा है, लेकिन यह प्रत्येक लॉग प्रविष्टि के अंत में नई पंक्ति वर्ण नहीं लिख रहा है। यदि मैं एक कमांड निष्पादित करता tail -n 50 myapp.logहूं , जैसे मुझे वास्तव में पाठ (लॉग प्रविष्टियों) की सैकड़ों "लाइनें" मिलती हैं।

यह लॉग फ़ाइल बहुत बड़ी है, मोटे तौर पर 1 जीबी, जो जानता है कि आखिरी सीआर और / या एलएफ कितना समय पहले डाला गया था। मैं उदाहरण के लिए अंतिम 2MBs कैसे कह सकता हूं?

जवाबों:


27

-cस्विच का उपयोग करना (2MB = 2 * 1024 * 1024 = 2097152 बाइट्स):

tail -c 2097152 myapp.log

सुझाव के लिए पेट्र उज़ेल को धन्यवाद । कुछ पूंछ कार्यान्वयन अंतिम किलोबाइट (के) या मेगाबाइट (एम) को मुद्रित करने के लिए एक इकाई जोड़ने की अनुमति देते हैं, जैसे:

tail -c 2m myapp.log

हालाँकि कृपया ध्यान दें कि यह मानक नहीं है (POSIX, UNIX (SUS) या लिनक्स (LSB) में से कोई भी) और पोर्टेबल नहीं है। यह भी ध्यान दें कि चूंकि शब्द "मेगा" / "किलो" ... और उनके संक्षिप्ताक्षर (M, k ...) अस्पष्ट अर्थ हैं (1000 बनाम 1024), इस बात का बहुत अधिक गारंटी नहीं है कि यह या उस के कार्यान्वयन का tailक्या अर्थ होगा 2m(हालांकि वर्तमान कार्यान्वयन के वर्तमान संस्करण जो इसका समर्थन करते हैं, लगता है कि यह 1024 संस्करण के लिए जा रहा है)।


5
टेल को सी स्विच के लिए तर्क के रूप में इकाइयों के साथ संख्या को स्वीकार करने में सक्षम होना चाहिए, इसलिए tail -c 2M myapp.logभी काम करना चाहिए।
पेट्र उज़ेल

@PetrUzel: धन्यवाद। इसे जोड़ने का उत्तर संपादित किया।
बीरी

अब मैं मूर्खतापूर्ण महसूस करता हूं :) मुस्तैदी के लिए धन्यवाद, वास्तव में इसकी सराहना करते हैं। महान सुझाव!
jwbensley

1
बिल्कुल सही, यकीन नहीं है कि यह मदद करेगा, लेकिन मैं इस पाठ-स्ट्रिंग को जोड़ दूंगा क्योंकि यह वही कीवर्ड है जो मैं यहां पाने के लिए खोज रहा था (एक अच्छा समय लिया): "बिल्ली दो बाइट पदों के बीच डेटा दर्ज करती है (लाइनें नहीं) ”
टॉर्केड
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.