588Koファイルがあり、0x7E8D6から0x8AD5Dまでのバイトを抽出したいと思います。私は試した :dd if=file of=result bs=50311 count=1 skip=518358
ddは、指定されたオフセットにスキップできないことを教えてくれます。私に何ができる?それを行うための他のユーティリティはありますか?
skip
とcount
は両方ともブロックで表されます。 518358×50311バイトをスキップするように求めています。
dd
はエラーを検出できないようにする可能性があります なので、とにかく避けるのが最善です。
ほとんどのUnixバリアント(BusyBoxを含むがOpenSBDは含まない)では、head
およびtail
にバイト数を渡すことができます。 tail
は1から数えることを覚えておいてください。
<file tail -c "$((0x7E8D6 + 1))" | head -c "$((0x8AD5D - 0x7E8D6))" >result
ddを使用してファイルの正確な部分を抽出しますか?
構文を少し調整しましょう。
bs = 1
単一のブロックまたはバイトにしたいカウントまたはスキップがあるため、ブロックサイズを1に設定します。
スキップ= 518358
ストリームの開始時に、この数のブロックまたはバイトをスキップします。
カウント= 50311
この数のブロックまたはバイトをストリームからコピーします。
dd if=/path/file of=/path/result bs= count=50311 skip=518358