Diff для 3-х бинарных файлов - PullRequest
       27

Diff для 3-х бинарных файлов

9 голосов
/ 30 декабря 2011

У меня есть 3 бинарных файла.Давайте назовем их file1.bin, file2.bin и file3.bin.

  • file1.bin и file2.bin имеют некоторые общие части.
  • file2.bin и file3.bin имеютнекоторые общие части.

Я хочу найти общие части между file1.bin и file2.bin, которые отличаются между file2.bin и file3.bin.

Как вы рекомендуетечтобы сделать это?Я уже выгрузил двоичные файлы в текстовые файлы, используя xxd, а затем выполнил 3-стороннее сравнение, используя vim -d file1.txt file2.txt file3.txt.

Однако vim помечает деталь как измененную во всех файлах, даже если онаизменился только в одном файле и остался прежним в двух других файлах.Я хочу, чтобы эти особые события отмечались по-разному.

Ответы [ 3 ]

6 голосов
/ 01 января 2012

Возможно, вы можете использовать встроенный unix diff (я думаю, что это часть OSX), но используйте --unchanged-group-format, чтобы перечислить сходства.Сделайте это для file1 и file 2. Затем сделайте это для file2 и file3.Затем вы можете сделать обычную разность двух полученных файлов.

Чтобы узнать, как получить сходство, взгляните на этот пост .

0 голосов
/ 10 января 2012

Инструмент, на котором я работаю ( ECMerge ), делает это.Вам просто нужно различить 3 бинарных файла, они будут представлять равные части друг перед другом, и модифицированные байты должны быть размещены между ними.Не нужно сначала получить шестнадцатеричный дамп.Вы можете написать скрипт на JavaScript, чтобы выводить все что угодно на основе результатов сравнения и байтов в файлах (это также работает в командной строке).

0 голосов
/ 30 декабря 2011

Chromium использует bsdiff , затем переключается на кабачок для выполнения бинарных различий, как объяснено в их блоге здесь .Вы можете найти полезные ссылки в их блоге.

...