GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana cara mengekstrak satu potongan byte dari dalam file?

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.


Linux
  1. Bagaimana cara membuat file di Linux dari jendela terminal?

  2. Bagaimana install -c berbeda dari cp

  3. Cara mengekstrak subtitle dari film MP4 dan MKV

  1. Bagaimana Cara Cat File Dari Awk?

  2. ekstrak satu file dari file tgz besar

  3. bagaimana cp -f berbeda dari cp --remove-destination?

  1. Bagaimana Cara Mengekstrak Atribut Tunggal Dari File Xml?

  2. Cara Mengekstrak atau Mengunzip File tar.xz di Linux

  3. Bagaimana cara RSYNC satu file?