Linuxデスクトップ(RHEL4)では、大きなファイル(1ギガバイト以上)から一定範囲のバイト(通常は1000未満)を抽出したい。ファイルへのオフセットとチャンクのサイズを知っています。
これを行うコードを書くことはできますが、コマンドラインソリューションはありますか?
理想的には、次のようなものです:
magicprogram --offset 102567 --size 253 < input.binary > output.binary
dd
を試してください:
dd skip=102567 count=253 if=input.binary of=output.binary bs=1
これは古い質問ですが、大きなバイトチャンクに適したdd
コマンドの別のバージョンを追加したいと思います。
dd if=input.binary of=output.binary skip=$offset count=$bytes iflag=skip_bytes,count_bytes
どこ $offset
および$bytes
はバイト単位の数字です。
トーマスの受け入れられた答えとの違いは、bs=1
はここには表示されません。 bs=1
は、入力および出力ブロックサイズを1バイトに生成します。これにより、抽出するバイト数が多い場合、非常に遅くなります。
head -c
+ tail -c
効率がdd
とどのように比較されるかわかりませんが、楽しいです:
printf "123456789" | tail -c+2 | head -c3
2番目から3バイトを選択します。
234
Ddコマンドは、これらすべてを実行できます。呼び出しの一部として、シークおよび/またはスキップパラメーターを確認します。
さらに速く
dd bs=<req len> count=1 skip=<req offset> if=input.binary of=output.binary