पिछले 100 लाइनों लॉग को पुनः प्राप्त करें


164

मुझे लॉग फ़ाइल से लॉग की अंतिम 100 लाइनों को पुनः प्राप्त करने की आवश्यकता है। मैंने sed कमांड की कोशिश की

sed -n -e '100,$p' logfilename

कृपया मुझे बताएं कि मैं अंतिम 100 लाइनों को पुनः प्राप्त करने के लिए इस कमांड को कैसे बदल सकता हूं ।


यह मैनुअल में उल्लिखित है: gnu.org/software/sed/manual/html_node/tail.html#tail , sed कैसे पूंछ का अनुकरण कर सकता है।
लार्स फिशर

जवाबों:


302

आप टेल कमांड का उपयोग इस प्रकार कर सकते हैं :

tail -100 <log file>   > newLogfile

अब अंतिम 100 लाइनें मौजूद रहेंगी newLogfile

संपादित करें:

टेललबर्ग उपयोग कमांड द्वारा उल्लिखित पूंछ के अधिक हाल के संस्करण :

tail -n 100 <log file>   > newLogfile

17
ध्यान दें कि tailसिंटैक्स की आवश्यकता के कुछ और हालिया संस्करणों tail -n 100 <filename>...
ट्वेलबर्ग

14

देखो, वह सीक स्क्रिप्ट जो 100 अंतिम पंक्तियों को प्रिंट करती है जिसे आप sed के लिए दस्तावेज में पा सकते हैं ( https://www.gnu.org/software/rew/manual/sed.html#tail ):

$ cat sed.cmd
1! {; H; g; }
1,100 !s/[^\n]*\n//
$p

$ sed -nf sed.cmd logfilename

मेरे लिए यह आपकी पटकथा से कहीं अधिक कठिन है

tail -n 100 logfilename

बहुत सरल है। और यह काफी कुशल है, यह सभी फाइल को नहीं पढ़ेगा यदि यह आवश्यक नहीं है। मेरे उत्तर को स्ट्रेस रिपोर्ट के लिए देखें tail ./huge-file: /unix/102905/does-tail-read-the-whole-file/102910#102910


13

"पूंछ" एक फ़ाइल के अंतिम भाग को प्रदर्शित करने के लिए कमांड है, उचित उपलब्ध स्विच का उपयोग करने से हमें अधिक विशिष्ट आउटपुट प्राप्त करने में मदद मिलती है। मेरे लिए सबसे ज्यादा इस्तेमाल किया जाने वाला स्विच है -n और -f

SYNOPSIS

पूंछ [-F | -एफ | -r] [-q] [-b संख्या | -सी संख्या | -n नंबर] [फ़ाइल ...]

यहाँ

-n संख्या: स्थान संख्या रेखाएँ है।

-f: -f विकल्प पूंछ का कारण बनता है जब फ़ाइल के अंत तक नहीं रुकता है, लेकिन इनपुट पर अतिरिक्त डेटा के इंतजार के लिए इंतजार करना चाहिए। -F विकल्प को नजरअंदाज किया जाता है यदि मानक इनपुट एक पाइप है, लेकिन ऐसा नहीं है यदि यह एक फीफो है।

पिछले 100 लाइनों लॉग को पुनः प्राप्त करें

To get last static 100 lines  
     tail -n 100 <file path>

To get real time last 100 lines
     tail -f -n 100 <file path>

3

मुझे पता है कि यह बहुत पुराना है, लेकिन, जो भी इसके लिए मदद कर सकता है।

less +F my_log_file.log

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

लॉग के लिए इसकी तरह विम [पूरी तरह से मेरी राय]

मूल कम प्रलेखन: https://linux.die.net/man/1/less

कम धोखाधड़ी: https://gist.github.com/glnds/8862214


1
len=`cat filename | wc -l`
len=$(( $len + 1 ))
l=$(( $len - 99 ))
sed -n "${l},${len}p" filename

पहली पंक्ति फ़ाइल की लंबाई (कुल पंक्तियाँ) लेती है, उसके बाद कुल पंक्तियों में +1, उसके बाद हमें 100 रिकॉर्ड बनाने होंगे ताकि, कुल लंबाई से -99 फिर फ़ाइल से अंतिम 100 पंक्तियों को लाने के लिए sed कमांड में चर डालें।

उम्मीद है इससे आपको मदद मिलेगी।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.