Назад | Перейти на главную страницу

Инструмент различий, с помощью которого я могу заставить определенные линии совпадать

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

Например: FILE1

test1
    subline1
    subline2
    subline3
test2
    subline1
    subline2
    subline3
    subline4
test3
    subline1
    subline2
    subline3
test4
    subline1
test5
    subline2
    subline3
    subline4

FILE2

test1
    subline1
    subline2
    subline3
test3
    subline1
    subline2
    subline3
    subline4
test4
    subline1
    subline2
    subline3
    subline4

С любыми инструментами, которые я использую, я не могу добиться идеального совпадения в строке с «test», а поскольку содержимое блоков похоже, оно всегда совпадает неправильно.

См. Изображения ниже: Блокнот ++ Сравнить Winmerge

Meld и diff тоже не работали.

Спасибо

diff - это линейный алгоритм, но похоже, что вы хотите сопоставить не строки, а блоки строк.

Одна из возможностей - использовать промежуточный шаг, чтобы поместить каждый блок в одну строку, соединив блоки в строке вместе, тогда вы можете использовать diff по результату.

git diff который поддерживает 4 разных алгоритма сравнения, и вы можете сравнивать два файла, даже если они не находятся в репозитории git:

--diff-algorithm={patience|minimal|histogram|myers}
       Choose a diff algorithm. The variants are as follows:

       default, myers
           The basic greedy diff algorithm. Currently, this is the default.

       minimal
           Spend extra time to make sure the smallest possible diff is produced.

       patience
           Use "patience diff" algorithm when generating patches.

       histogram
           This algorithm extends the patience algorithm to "support low-occurrence common elements".

       For instance, if you configured diff.algorithm variable to a non-default value and want to use the
       default one, then you have to use --diff-algorithm=default option.

Однако при тестировании файлов все алгоритмы дали тот же результат, что и diff бы.

Существуют и другие инструменты для различения структурированных форматов, таких как XML или JSON, блочные различия, которые вам нужны, не являются ни строчными, ни какой-либо другой формальной структурой.

В конечном счете, я думаю, что для того, чтобы алгоритм сравнения работал на вас, ваши данные должны быть в строчном или другом формальном формате.

Total Commander вам поможет (сравните по содержанию)