Есть ли инструмент для сравнения значений в файлах .ini? [закрыто]


10

Я ищу утилиту сравнения файлов специально для файлов .ini, обычно используемых в качестве файлов настроек.

Существует множество инструментов сравнения файлов (WinDiff, Beyond Compare, CompareIt, WinMerge и т. Д.), Но ни один из опробованных мной инструментов не может очень хорошо обрабатывать файлы .ini.

Типичный файл .ini может выглядеть так:

[Settings]
Setting1=abc
Setting2=xyz

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

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


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

Вы должны переименовать свой пост .... Есть ли инструмент для сравнения значений в файлах .ini?
Джозеф Керн


Спасибо Джозеф, хорошая мысль, я отредактировал название. splattne - initools звучит так, как будто это было бы идеально, позор, что я использую Windows.
Ssollinger

Ответы:


6

1
Фантастика, это именно то, что я искал. Я кратко посмотрел на Beyond Compare раньше, но не заметил отсортированного правила ini. В случае , если кому - то интересно, то ссылка в вашем ответе для Beyond Compare 2. «отсортирован INI правило» для Beyond Compare 3 доступен здесь: scootersoftware.com/download.php?zz=kb_moreformats
ssollinger

Ссылка с первого комментария не работает - 404. Существует еще одна страница фр BC4 только - scootersoftware.com/download.php?zz=kb_moreformatsv4
pl71


2

Я часто просто сортировал файлы перед сравнением. Это не поможет, если у вас есть что-то вроде

[foo]
bar1=xyz
bar2=abc
[foo2]
bar1=lky

но если предположить, что ваши ключи уникальны (и поэтому могут быть сопоставлены с разделом), это часто работает в крайнем случае.


Это иногда помогает, однако, как вы сказали, это не работает, если есть несколько разделов, а также часто происходит сбой, если в одном из файлов отсутствует несколько строк (большинство инструментов затем начинают пытаться сопоставить неправильные строки).
Ssollinger

правда; Я не рекомендую это как идеал, но в крайнем случае, это часто может помочь
Mikeage

2

Попробуйте vimdiff. Вот пример с файлами .ini.


МОИ ГЛАЗА! .Xdefaults! Поменяй их!
Джозеф Керн

1
Да, это очень некрасиво, извини. Но я не думаю, что это не имеет ничего общего с .Xdefaults, так как это консоль. Я посмотрю в документации vim, чтобы изменить эти цвета :).
Chmeee

1
если кому-то еще это интересно - vimdiff доступен через vim.org. VimDiff в порядке, но он не работает, если строки поменялись местами, и тогда значение будет ближе, чем строка перед знаком равенства. В этом случае VimDiff покажет разницу в части перед знаком равенства, а это не то, что я хочу.
ssollinger


0

Мне всегда нравился Winmerge, очень настраиваемый.


WinMerge великолепен, но не очень хорошо работает с файлами настроек (INI-файлами). Это лучше, чем некоторые другие (например, WinDiff), но мой вопрос был об инструменте, который специально сравнивает значения в файлах .ini. WinMerge не может этого сделать.
Ssollinger

1
Winmerge имеет настройку для сравнения блоков текста, которые были перемещены и похожи. Я использую его для сравнения файлов web.config, но думаю, они немного более организованы, чем файлы ini.
Дэйв

Я использую WinMerge и выполняю подстановку регулярных выражений в каждом файле, чтобы удалить числа перед сравнением ( [0-9]+=с =). Но я всегда должен отказаться от измененных файлов. Я также ищу лучшее решение.
джеидот
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.