Macos 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

我有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
在所有文件中将零件标记为已更改,即使它仅在一个文件中更改,而在其他两个文件中保持不变。我希望这些特殊类型的事件以不同的方式标记。

Chromium使用,然后切换到小胡瓜进行二进制差异,正如他们在博客中解释的那样。您可能会从他们的博客中找到有用的线索。

也许您可以使用内置的unix diff(我认为它是OSX的一部分),但可以使用
--unchanged group format
列出相似之处。对文件1和文件2执行此操作。然后对文件2和文件3执行此操作。然后,可以对两个结果文件执行常规差异


要了解如何获得相似性,请看一看。

我为之工作的工具()就是这样做的。您只需区分这3个二进制文件,它将在彼此前面显示相等的部分,并将修改后的字节适当地放在中间。不需要先得到一个十六进制转储。您可以使用JavaScript编写脚本,根据差异结果和文件中的字节输出您喜欢的任何内容(它也可以在命令行中工作)。

它可以按照我在问题中描述的方式执行3向差异吗?我不知道怎么做的,你能描述一下吗?bsdiff处理二进制文件,并生成二进制补丁。vimdiff期望文本文件作为其输入,因此我想不出一种方法来让bsdiff按照您希望的方式工作。另一种选择是,查看是否可以使用
'diffexpr'
选项来引导vim在生成二进制文件的块时使用diff程序的额外设置-可以使用
-I
选项来
diff
来为执行diff时应忽略的“行”指定正则表达式。