लिनक्स कमांड एक बाइट रेंज को एक फाइल से पुनः प्राप्त करने के लिए


15

मैं जानता हूँ कि headऔर tailले जा सकते हैं -cएक बाइट ऑफसेट निर्दिष्ट करने का विकल्प। मैं एक बड़ी लॉग फ़ाइल से बाइट रेंज को कुशलतापूर्वक निकालने का एक तरीका ढूंढ रहा हूं।

जवाबों:


17

बचाव के लिए यूनिक्स कमांड का डेयरडेविल dd!

dd if=yourfile ibs=1 skip=200 count=100

यह बाइट 200 से शुरू होती है और अगले बाइट्स में 100 या दूसरे शब्दों में, बाइट्स 200-300 को दर्शाती है। ibsइसका मतलब है कि dd केवल 512 बाइट्स के बजाय एक बार में एक बाइट पढ़ता है, लेकिन फिर भी डिफ़ॉल्ट 512 बाइट विखंडू में लिखता है। जाओ और देखो कि क्या ibsप्रदर्शन को नुकसान पहुँचाता है, मुझे आशा नहीं है।


782090815 बाइट्स की फ़ाइल के लिए, मुझे ये समय मिला: time dd if=file.txt | wc -l= 00: 00: 03s। time dd if=file.txt ibs=1 count=782090815 | wc -l= 9:05:19
डैनिलो सूजा मोरेस

11

यदि आपकी रुचि बाइट्स में है, तो odअधिक ब्याज होगा।

-j, --skip-bytes=bytes
-N, --read-bytes=bytes

तो बाइट 1024 में शुरू होने वाले 16 बाइट्स को पढ़ने के लिए, और एएससीआई में आउटपुट

od -j 1024 -N 16 -a /bin/sh

4

आप उपयोग कर सकते हैं dd if=logfile of=pieceoflogfile skip=startingblock count=#ofblocks(संभवतः bs=1एक-बाइट ब्लॉक प्राप्त करने के लिए, अन्यथा यह 512 बाइट ब्लॉक का उपयोग करता है)। हालांकि एक बार में एक बाइट लिखने के लिए यह बताना कितना कुशल है, यह सुनिश्चित नहीं है।


ठीक है, अगर दक्षता के संबंध में - 2 ddके पाइप-जंजीर एक साथ हो सकते हैं (1 वसा टुकड़ा काट सकता है और दूसरा पाइप पर ठीक काम करेगा, डिस्क नहीं), लेकिन ddन केवल bsअलग बल्कि ibsऔर obsसाथ ही, इसलिए कम से कम यह पढ़ने की तुलना में बड़े ब्लॉक के साथ आउटपुट कर सकता है।
जूल

1

यह मानते हुए कि फ़ाइल बहुत बड़ी नहीं है (उदाहरण के लिए कई जीबी या तो), एक से दूसरे तक पाइपिंग करना जितना कुशल होगा, उतना कम करने के लिए अपना खुद का प्रोग्राम लिखना होगा।

head ... file | tail ...

(या आसपास का रास्ता। जो भी हो।)


1
टेल को पहले बड़े ऑफसेट के लिए जाना चाहिए, अन्यथा हेड आउटपुट की शुरुआत को छोड़ दिया जाता है।
19
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.