2010-01-07 41 views
6

làm cách nào để trích xuất các đoạn 12byte từ một tệp nhị phân tại các vị trí nhất định trong tệp.cách trích xuất các byte cụ thể từ một tệp bằng cách sử dụng unix

Nếu tôi muốn trích xuất 12 byte đầu tiên tôi có thể làm một cái gì đó giống như

head -c12 file.bin>output 

Nếu tôi muốn trích xuất 12 byte từ byte61 tôi có thể làm một cái gì đó giống như

head -c72 file.bin|tail -c12 >output 

Có đơn giản hơn nếu tôi có thứ gì đó như 20 khối 12byte tôi cần phải trích xuất

cảm ơn

Trả lời

15

Sử dụng dd:

dd bs=1 seek=60 count=12 if=file.bin of=output 

Bạn có thể viết vòng kết nối để thay thế các số.

Bạn cũng có thể xem xét sử dụng awk, Perl hoặc Python, nếu có nhiều việc cần làm hoặc cần phải thực sự nhanh.

+11

Trên Linux với coreutils 8.13 nó được ** bỏ ** thay vì ** iSEEK khiến * *: 'dd bs = 1 skip = 60 count = 12 if = file.bin of = output' –

+0

+1 Great =) Mọi thứ rất đơn giản trong Unix & Linux – Viet

1

Sử dụng xxd:

xxd -p -seek 3d -l 12 file.bin > output 

3d nghĩa 61 trong hệ thập lục phân

Sử dụng hexdump:

hexdump -ve '16/1 "%0.2x " "\n"' -s 3d -n 12 file.bin > output 
Các vấn đề liên quan