大容量ファイルのバイナリブロックの交換

大容量ファイルのバイナリブロックの交換

ランダムデータで埋められた1MBファイルを含むパーティションイメージがあり、そのファイルの内容を別のランダムデータで埋められた別の1MBファイルに置き換えたいと思います。

私は既知の一意の文字列でファイルを生成し、sedを使用してそれを置き換える方法で以前に同様のことをしました。sed -i 's/foobar_corruptiontest/barfoo_corruptiontest/' partition.img

解決策のために、私は次のことを想像しました。

head -c 1M </dev/urandom >fileA
head -c 1M </dev/urandom >fileB
binary_sed -i 's/<fileA/<fileB/' partition.img

ツールが見つかりました。ベイベイsedに似たバイナリファイルエディタであると主張していますが、マニュアルページを誤って読まない限り、ファイル入力をサポートしていないようです。

注:誰かがなぜこれをしたいのかとても混乱している場合、コンテキストは私がテストしていることです。確実性予測可能な方法でファイルを破損しますが、問題に関連してはいけません。実際に答えで考慮しないでください。

答え1

良い解決策が見つかりましたが、残念ながらファイルオフセットを検索するには非標準ツールが必要です。誰かが標準ツールだけを使用してより良い答えを得ることができることを願っています。

インストールツール検索バー

head -c 1M </dev/urandom >fileA
head -c 1M </dev/urandom >fileB
OFFSET=$(searchbin -f fileA -m 1 partition.img | head -1 | awk '{print $4}')
dd if=fileB of=paritition.img bs=1 seek=${OFFSET} conv=notrunc

関連情報