Soustraction de files binarys

J'ai 2 files binarys FileA et FileC

Son est tel que FileC = FileA + FileB utilisant l'utilitaire de cat

Comment puis-je soustraire FileA de FileC pour get FileB ?

PS: J'utilise Ubuntu Oneiric

En supposant que vous avez stat sur votre plate-forme pour get la taille de FileA , vous pourriez faire quelque chose comme:

 dd if=./FileC of=./FileB bs=1 skip=$(stat -c %s ./FileA) 

qui devrait fonctionner sur n'importe quel type de file.

Vous devez savoir où couper. Pour les files binarys, cela signifie généralement connaître la taille de FileA ou FileA .

Vous pouvez find la taille de FileA avec ls -l . Si vous avez besoin d'écrire un script portable, vous pouvez extraire la taille avec ls -lgo FileA | awk '{print $3; exit}' ls -lgo FileA | awk '{print $3; exit}' ls -lgo FileA | awk '{print $3; exit}' (ou, pour les versions non-POSIX de ls qui n'ont pas les options -g et -o , ls -l FileA | awk '{print $5; exit}' ). Sur Linux non-embarqué, un moyen plus simple d'get la taille est stat -c %s FileA .

Une fois que vous avez la taille, vous pouvez utiliser la tail pour extraire la deuxième partie du file:

 tail -c +$((sizeA + 1)) <FileC 

Si vous souhaitez fractionner un file en morceaux égaux, utilisez la command split .