2010-01-07 19 views
6

jak wyodrębnić 12 bitowych fragmentów z pliku binarnego w określonych pozycjach w pliku.jak wyodrębnić określone bajty z pliku przy użyciu Uniksa

Gdybym chciał wydobyć pierwsze 12 bajtów mógłby zrobić coś jak

head -c12 file.bin>output 

Gdybym chciał wydobyć 12 bajtów z byte61 mógłby zrobić coś jak

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

Czy istnieje prostszy sposób, jeśli mam coś w rodzaju 20 kawałków 12-bitowych muszę wyodrębnić

dziękuję

Odpowiedz

15

Zastosowanie dd:

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

można napisać pętlę powłoki do zamiany liczb.

Można również rozważyć użycie awk, Perl lub Python, jeśli jest ich dużo, lub musi być naprawdę szybki.

+11

na systemach Linux z coreutils 8.13 jest ** pominąć ** zamiast ** iseek * *: 'dd bs = 1 skip = 60 count = 12 if = file.bin of = output' –

+0

+1 Great =) Rzeczy są takie proste w systemach Unix i Linux – Viet

1

Korzystanie xxd:

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

3d oznacza 61 w systemie szesnastkowym

Korzystanie hexdump:

hexdump -ve '16/1 "%0.2x " "\n"' -s 3d -n 12 file.bin > output 
Powiązane problemy