FileA
2つのバイナリがあります FileC
ユーティリティをFileC = FileA + FileB
使用すると、次のようになります。cat
取得する FileA
にはどうすればいいですか?FileC
FileB
PS:私はUbuntu Oneiricを使っています。
答え1
stat
プラットフォームに対応するサイズがあると仮定すると、FileA
次のことができます。
dd if=./FileC of=./FileB bs=1 skip=$(stat -c %s ./FileA)
すべての種類のファイルで動作する必要があります。
答え2
どこを切るべきかを知る必要があります。バイナリファイルの場合、これは通常FileA
またはFileB
。
FileA
でサイズを確認できますls -l
。移植可能なスクリプトを作成する必要がある場合は、extractsizeを使用できます(またはls -lgo FileA | awk '{print $3; exit}'
オプションのないPOSIX準拠以外のバージョンでは使用)。組み込みLinux以外の場合、サイズを取得するより簡単な方法は 。ls
-g
-o
ls -l FileA | awk '{print $5; exit}'
stat -c %s FileA
サイズが決定したら、それを使用してtail
ファイルの2番目の部分を抽出できます。
tail -c +$((sizeA + 1)) <FileC
ファイルを同じチャンクに分割するには、このsplit
コマンドを使用します。