Solução de linha de comando para remover partes de um arquivo binário?

0

Eu tenho um arquivo binário e gostaria de remover partes de. Ao remover, quero dizer, excluir essas partes e, assim, tornar o tamanho do arquivo menor.

As partes seriam entre duas cadeias ASCII. Então, por exemplo, o arquivo ficaria assim

........ start ABCD end ..... start EFGH end ..... start IJKL end ...........

Portanto, neste arquivo, gostaria de pesquisar as strings "start" e "end" e remover as partes entre elas.

A maneira que eu acho que posso fazer é

  1. pesquise todos os locais para "início" e "fim"
  2. calcule os intervalos a partir desse
  3. elimine essas partes

Agora estou usando um editor Hex baseado em GUI e uso os comandos "Search All", "Select Range" e "Delete", mas tenho certeza de que seria possível resolvê-lo usando uma poderosa linha de comando hex / text editores.

Você conhece alguma solução para esse problema que não exija o uso de uma GUI para pesquisar, copiar & colar na área de transferência, selecione os comandos range e delete, mas são apenas algumas linhas de linha de comando?

Estou interessado em ambos os scripts de shell do Linux ou usando alguns editores hexadecimais de linha de comando no Windows, ou mesmo scripts Python são bem-vindos.

Você acha que é possível resolver este problema apenas substituindo Regex simples? Existe algum utilitário de substituição regex que lida bem com arquivos binários?

    
por hyperknot 26.06.2011 / 18:15

1 resposta

0

Isso soa como um trabalho para o perl:

perl -pe 's/start.*?end//g' < inputfile.bin > outputfile.bin
    
por 27.06.2011 / 22:49