これは古い質問ですが、別のバージョンの 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
それぞれスキップし、読み書きします。