2010-12-10 12 views
52

मैं एक बैश स्क्रिप्ट लिख रहा हूं जिसे फ़ाइल के शीर्षलेख (पहले 10 बाइट्स) प्राप्त करने की आवश्यकता है और फिर किसी अन्य अनुभाग में पहले 10 बाइट को छोड़कर सब कुछ प्राप्त करें। ये बाइनरी फाइलें हैं और संभवतः \0 और \n के पहले 10 बाइट्स में होंगे। ऐसा लगता है कि अधिकांश उपयोगिताओं ASCII फ़ाइलों के साथ काम करते हैं। इस कार्य को प्राप्त करने का एक अच्छा तरीका क्या है?बाइनरी फ़ाइल के पहले दस बाइट कैसे प्राप्त करें

उत्तर

84

के रूप में पहले ही उल्लेख किया पहले 10 बाइट्स पाने के लिए,

tail -c+11 
+2

हां। मुझे 'डीडी' विचार पसंद आया लेकिन इस विकल्प को बफर आकार में बदलाव की आवश्यकता नहीं है, इसलिए यह बड़ी फ़ाइलों के साथ अच्छी तरह से काम करता है। धन्यवाद। – User1

26

head -c 10 यहां सही बात है।

+3

यह दिलचस्प है कि यह जवाब पहला था, यह सही है, लेकिन दूसरों के पास बहुत अधिक उत्साह है। – robert

28

आप dd कमांड का उपयोग बाइनरी फ़ाइल से बाइट्स की मनमानी संख्या की प्रतिलिपि बनाने के लिए कर सकते हैं।

head -c 10 

(कम से कम जीएनयू tail साथ), लेकिन पहले 10 बाइट्स सभी प्राप्त करने के लिए:

dd if=infile of=outfile1 bs=10 count=1 
dd if=infile of=outfile2 bs=10 skip=1 
+1

यह काम करता है लेकिन यह काफी धीमा है। 10 की बीएस इन बड़ी फाइलों को मार रही है। क्या पहले दस बाइट्स को छोड़ने का कोई तेज तरीका है? यह बहुत आसान लगता है। – User1

संबंधित मुद्दे