2010-12-10 2 views
52

Tôi đang viết tập lệnh bash cần lấy tiêu đề (10 byte đầu tiên) của tệp và sau đó trong phần khác nhận được mọi thứ ngoại trừ 10 byte đầu tiên. Đây là các tệp nhị phân và có thể sẽ có các số \0\n trong suốt 10 byte đầu tiên. Dường như hầu hết các tiện ích đều hoạt động với các tệp ASCII. Một cách hay để đạt được nhiệm vụ này là gì?Cách lấy mười byte đầu tiên của tệp nhị phân

Trả lời

84

Để có được 10 byte đầu tiên, như đã nói đã:

head -c 10 

Để có được tất cả nhưng 10 byte đầu tiên (ít nhất là với GNU tail):

tail -c+11 
+2

Có. Tôi thích ý tưởng 'dd' nhưng tùy chọn này không yêu cầu thay đổi kích thước bộ đệm để nó hoạt động tốt với các tệp lớn. Cảm ơn. – User1

26

head -c 10 thực hiện điều đúng ở đây.

+3

Thật là thú vị rằng câu trả lời này là câu trả lời đầu tiên, nó là chính xác, nhưng những người khác có nhiều upvotes hơn. – robert

28

Bạn có thể sử dụng lệnh dd để sao chép số byte tùy ý từ tệp nhị phân.

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

Điều này hoạt động nhưng nó khá chậm. Các bs of 10 đang giết những tập tin khổng lồ này. Có cách nào nhanh hơn để bỏ qua mười byte đầu tiên không? Nó có vẻ rất đơn giản. – User1