Ini adalah pertanyaan lama, tapi saya ingin menambahkan versi lain dari dd perintah yang lebih cocok untuk potongan byte besar:
dd if=input.binary of=output.binary skip=$offset count=$bytes iflag=skip_bytes,count_bytes
di mana $offset dan $bytes adalah angka dalam satuan byte.
Perbedaannya dengan jawaban yang diterima Thomas adalah bs=1 tidak muncul di sini. bs=1 menyetel ukuran blok input dan output menjadi 1 byte, yang membuatnya sangat lambat saat jumlah byte yang akan diekstraksi besar.
Ini berarti kita membiarkan ukuran blok (bs ) dengan standar 512 byte. Menggunakan iflag=skip_bytes,count_bytes , kami memberi tahu dd untuk memperlakukan nilai setelah skip dan count sebagai jumlah byte, bukan jumlah blok.
head -c + tail -c
Tidak yakin bagaimana perbandingannya dengan dd dalam efisiensi, tetapi menyenangkan:
printf "123456789" | tail -c+2 | head -c3
mengambil 3 byte, mulai dari yang ke-2:
234
Lihat juga:
- Cara mengambil potongan acak dari file di Unix/Linux
- Manual untuk kepala
- Manual untuk ekor
Coba dd :
dd skip=102567 count=253 if=input.binary of=output.binary bs=1
Opsi bs=1 menyetel ukuran blok, membuat dd membaca dan menulis satu byte pada suatu waktu. Ukuran blok default adalah 512 byte.
Nilai bs juga memengaruhi perilaku skip dan count sejak angka di skip dan count adalah jumlah blok itu dd masing-masing akan melewati dan membaca/menulis.