用于从二进制文件中删除部分的命令行解决方案?

用于从二进制文件中删除部分的命令行解决方案?

我有一个二进制文件,我想删除其中的部分内容。删除是指删除那些部分,从而缩小文件大小。

这些部分将位于两个 ASCII 字符串之间。因此,例如,该文件将如下所示

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

因此在这个文件中,我想搜索字符串“start”和“end”并删除它们之间的部分。

我认为我可以这样做

  1. 查找“开始”和“结束”的所有位置
  2. 计算范围
  3. 删除那些部分

现在我正在使用一些基于 GUI 的十六进制编辑器,并使用“搜索全部”、“选择范围”和“删除”命令,但我确信可以使用一些强大的命令行十六进制/文本编辑器来解决它。

你知道解决这个问题的任何方法,不需要使用 GUI用于查找、复制和粘贴到剪贴板、选择范围和删除命令,但仅仅是几行命令行?

我对 Linux shell 脚本或使用 Windows 下的一些命令行十六进制编辑器很感兴趣,甚至欢迎使用 Python 脚本。

您认为仅通过简单的正则表达式替换就可以解决这个问题吗?是否有任何可以很好地处理二进制文件的正则表达式替换实用程序?

答案1

这听起来像是 perl 的工作:

perl -pe 's/start.*?end//g' < inputfile.bin > outputfile.bin

相关内容