我有一个二进制文件,我想删除其中的部分内容。删除是指删除那些部分,从而缩小文件大小。
这些部分将位于两个 ASCII 字符串之间。因此,例如,该文件将如下所示
........ start ABCD end ..... start EFGH end ..... start IJKL end ...........
因此在这个文件中,我想搜索字符串“start”和“end”并删除它们之间的部分。
我认为我可以这样做
- 查找“开始”和“结束”的所有位置
- 计算范围
- 删除那些部分
现在我正在使用一些基于 GUI 的十六进制编辑器,并使用“搜索全部”、“选择范围”和“删除”命令,但我确信可以使用一些强大的命令行十六进制/文本编辑器来解决它。
你知道解决这个问题的任何方法,不需要使用 GUI用于查找、复制和粘贴到剪贴板、选择范围和删除命令,但仅仅是几行命令行?
我对 Linux shell 脚本或使用 Windows 下的一些命令行十六进制编辑器很感兴趣,甚至欢迎使用 Python 脚本。
您认为仅通过简单的正则表达式替换就可以解决这个问题吗?是否有任何可以很好地处理二进制文件的正则表达式替换实用程序?
答案1
这听起来像是 perl 的工作:
perl -pe 's/start.*?end//g' < inputfile.bin > outputfile.bin