Macos 3个二进制文件的差异
我有3个二进制文件。让我们称它们为Macos 3个二进制文件的差异,macos,vim,diff,binaryfiles,Macos,Vim,Diff,Binaryfiles,我有3个二进制文件。让我们称它们为file1.bin,file2.bin和file3.bin file1.bin和file2.bin有一些公共部分 file2.bin和file3.bin有一些公共部分 我想找到file1.bin和file2.bin之间的公共部分,它们在file2.bin和file3.bin之间是不同的 你建议如何做到这一点?我已经使用xxd将二进制文件转储到文本文件中,然后使用vim-d file1.txt file2.txt file3.txt进行了三向差异 但是,vim
file1.bin
,file2.bin
和file3.bin
和file1.bin
有一些公共部分file2.bin
和file2.bin
有一些公共部分file3.bin
file1.bin
和file2.bin
之间的公共部分,它们在file2.bin
和file3.bin
之间是不同的
你建议如何做到这一点?我已经使用xxd
将二进制文件转储到文本文件中,然后使用vim-d file1.txt file2.txt file3.txt
进行了三向差异
但是,
vim
在所有文件中将零件标记为已更改,即使它仅在一个文件中更改,而在其他两个文件中保持不变。我希望这些特殊类型的事件以不同的方式标记。Chromium使用,然后切换到小胡瓜进行二进制差异,正如他们在博客中解释的那样。您可能会从他们的博客中找到有用的线索。也许您可以使用内置的unix diff(我认为它是OSX的一部分),但可以使用--unchanged group format
列出相似之处。对文件1和文件2执行此操作。然后对文件2和文件3执行此操作。然后,可以对两个结果文件执行常规差异
要了解如何获得相似性,请看一看。我为之工作的工具()就是这样做的。您只需区分这3个二进制文件,它将在彼此前面显示相等的部分,并将修改后的字节适当地放在中间。不需要先得到一个十六进制转储。您可以使用JavaScript编写脚本,根据差异结果和文件中的字节输出您喜欢的任何内容(它也可以在命令行中工作)。它可以按照我在问题中描述的方式执行3向差异吗?我不知道怎么做的,你能描述一下吗?bsdiff处理二进制文件,并生成二进制补丁。vimdiff期望文本文件作为其输入,因此我想不出一种方法来让bsdiff按照您希望的方式工作。另一种选择是,查看是否可以使用
'diffexpr'
选项来引导vim在生成二进制文件的块时使用diff程序的额外设置-可以使用-I
选项来diff
来为执行diff时应忽略的“行”指定正则表达式。