sed -n '10000000,10000020p' filename
आप इस तरह से थोड़ी गति कर सकते हैं:
sed -n '10000000,10000020p; 10000021q' filename
उन आदेशों में, विकल्प "पैटर्न स्पेस की स्वचालित प्रिंटिंग को दबाने" का -n
कारण बनता sed
है। p
आदेश "प्रिंट [एस] वर्तमान पैटर्न अंतरिक्ष" और q
आदेश "इसके तत्काल बाद किसी भी अधिक इनपुट प्रसंस्करण के बिना छोड़ दिया [एस] sed स्क्रिप्ट ..." उद्धरण से हैं sed
man
पृष्ठ ।
वैसे, आपकी आज्ञा
tail -n 10000000 filename | head 10
फ़ाइल के अंत से दस लाखवीं पंक्ति में शुरू होता है , जबकि आपकी "मध्य" कमांड शुरू से दस मिलियनवें स्थान पर शुरू होती है जो इसके बराबर होगी:
head -n 10000010 filename | tail 10
समस्या यह है कि वेरिएबल लेंथ लाइनों के साथ अनसोल्ड फाइल्स के लिए किसी भी प्रक्रिया को फाइल की गिनती की नई सीमा से गुजरना पड़ता है। शॉर्टकट का कोई तरीका नहीं है।
यदि, हालांकि, फ़ाइल को सॉर्ट किया जाता है (उदाहरण के लिए टाइमस्टैम्प के साथ एक लॉग फ़ाइल), या लंबाई की निश्चित लाइनें हैं, तो आप एक बाइट स्थिति के आधार पर फ़ाइल में तलाश कर सकते हैं। लॉग फ़ाइल उदाहरण में, आप मेरे अजगर स्क्रिप्ट के रूप में समय की एक श्रेणी के लिए एक द्विआधारी खोज कर सकता है यहाँ * करता है। निश्चित रिकॉर्ड लंबाई फ़ाइल के मामले में, यह वास्तव में आसान है। आप बस linelength * linecount
फ़ाइल में वर्ण चाहते हैं ।
* मैं उस स्क्रिप्ट के लिए एक और अपडेट पोस्ट करने के लिए अर्थ रखता हूं। हो सकता है कि मैं इन दिनों में से किसी एक में घूमूं।