これは古い質問ですが、別のバージョンの dd を追加したいと思います バイトの大きなチャンクに適したコマンド:
dd if=input.binary of=output.binary skip=$offset count=$bytes iflag=skip_bytes,count_bytes
どこで $offset そして $bytes バイト単位の数値です。
トーマスの受け入れられた答えとの違いは、 bs=1 です ここには表示されません。 bs=1 入力と出力のブロック サイズを 1 バイトに設定します。これにより、抽出するバイト数が多い場合に非常に遅くなります。
これは、ブロック サイズ (bs) をそのままにしておくことを意味します。 ) デフォルトの 512 バイト。 iflag=skip_bytes,count_bytes の使用 、 dd と伝えます skip の後の値を処理する そして count ブロック量ではなくバイト量として。
head -c + tail -c
dd と比べてどうかわかりません 効率的ですが、楽しいです:
printf "123456789" | tail -c+2 | head -c3
2 番目のバイトから始まる 3 バイトを選択します:
234
こちらもご覧ください:
- Unix/Linux でファイルから任意のチャンクを取得する方法
- 頭のマニュアル
- しっぽのマニュアル
dd を試す :
dd skip=102567 count=253 if=input.binary of=output.binary bs=1
オプション bs=1 ブロックサイズを設定し、dd にします 一度に 1 バイトずつ読み書きします。デフォルトのブロック サイズは 512 バイトです。
bs の値 skip の動作にも影響します と count skip の数字から および count ブロックの数 その dd それぞれスキップし、読み書きします。