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.