大容量バイナリファイルをコンテキストモードで決定された部分に分割する

大容量バイナリファイルをコンテキストモードで決定された部分に分割する

次の大容量(2GB)ファイルがあります。

^%%-=-=-=-=-=-=-=-=-=-=-=-=-=-%%^
<binary data>
^%%-=-=-=-=-=-=-=-=-=-=-=-=-=-%%^ 
<binary data>
^%%-=-=-=-=-=-=-=-=-=-=-=-=-=-%%^
<binary data>
...

^%%-=-=-=-=-=-=-=-=-=-=-=-=-=-%%^は区切り記号です。バイナリセグメントが大きい。アーカイブには約50個あります。

ファイルのバイナリ部分を抽出しようとしています。各バイナリセグメントは独自のファイルに移動する必要があります。

使ってみましたがcsplit

csplit --digits=2 --prefix=out stu.ear '/\^%%-=-=-=-=-=-=-=-=-=-=-=-=-=-%%\^/'

しかし、次の出力と2つのout??ファイルを受け取りました。

1
2097951144

これを行うことができるツールがあります(csplitバイナリを処理できる実装ですか?)

ベストアンサー1

これを行うために小さなPythonツールを作成しました。https://github.com/mypalmike/csplitb

csplitb.py --prefix X --suffix Y --number Z XXXXXXXX input-file.extension
X= 名前で始まる出力ファイル名
はい=希望の出力ファイル拡張子
=出力ファイルを区別するために使用されるビット数
XXXXXXXXX=入力ファイルから分割する各バイナリファイルの開始16進数
入力ファイル。拡張子=ファイル分割中

例:
csplitb.py --prefix photo --suffix .png --number 4 89504e47 block-file.raw

出力:

photo0000.png
photo0001.png
photo0002.png
.............

おすすめ記事