次の大容量(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
.............