¿Existe una herramienta para comparar valores en archivos .ini? [cerrado]

10

Estoy buscando una utilidad de comparación de archivos específicamente para archivos .ini, generalmente utilizada como archivos de configuración.

Hay muchas herramientas de comparación de archivos (WinDiff, Beyond Compare, CompareIt, WinMerge, ...), pero ninguna de las herramientas que probé puede manejar archivos .ini muy bien.

Un archivo .ini típico podría verse así:

[Settings]
Setting1=abc
Setting2=xyz

La herramienta debe coincidir con las líneas basadas en la cadena antes del signo igual, luego mostrar diferencias en todo lo demás después del signo igual. El orden de las líneas dentro de una sección (las secciones se indican entre corchetes) no importa y debe ignorarse.

No puedo encontrar ninguna herramienta que pueda manejar esto. Por lo general, las herramientas existentes mostrarán diferencias en el comienzo de la línea antes del signo igual (si la mayoría del texto después del signo igual coincide), tendrán dificultades con las líneas reordenadas (ya sea que se muestren como modificadas o que coincidan algunas líneas y muestren el restante como eliminado en un lugar y luego agregado en otro). Incluso encontré algunas herramientas en las que el texto coincidente se puede restringir, por ejemplo, usando expresiones regulares, pero estas simplemente ignoran el resto de la línea y no puedo hacer coincidir las líneas según un patrón (es decir, todo antes del signo igual) y luego compararlas según en otro (todo después del signo igual).

Ssollinger
fuente
Ahora que he leído tu pregunta, realmente no entiendo lo que quieres ... quizás puedas mostrar lo que QUIERES y lo que tienes. regexes y diff deberían poder manejar lo que quieres hacer.
Joseph Kern
Debería cambiar el nombre de su publicación ... ¿Existe una herramienta para comparar valores en archivos .ini?
Joseph Kern
1
Para OS / 2: os2world.com/goran/initools.htm ;-)
splattne
Gracias Joseph, buen punto, he editado el título. splattne - initools suena como si fuera perfecto, lástima que esté usando Windows.
ssollinger

Respuestas:

6

Beyond Compare tiene una regla INI ordenada que puede descargar .

crb
fuente
1
Fantástico, eso es exactamente lo que estaba buscando. Miré brevemente antes de Beyond Compare pero no noté la regla ordenada ini. En caso de que alguien esté interesado, el enlace en su respuesta es para Beyond Compare 2. La "regla de clasificación ordenada" para Beyond Compare 3 está disponible aquí: scootersoftware.com/download.php?zz=kb_moreformats
ssollinger
El enlace del primer comentario no funciona - 404. Solo hay otra página fr BC4 - scootersoftware.com/download.php?zz=kb_moreformatsv4
pl71
2

A menudo he ordenado los archivos antes de compararlos. No ayudará si tienes algo como

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

pero suponiendo que sus claves son únicas (y, por lo tanto, pueden coincidir con una sección), a menudo funciona en un apuro.

Mikeage
fuente
Esto a veces ayuda, sin embargo, como dijiste que no funciona si hay varias secciones, también falla a menudo si faltan varias líneas en uno de los archivos (la mayoría de las herramientas comienzan a intentar hacer coincidir las líneas incorrectas).
ssollinger
cierto; No estoy recomendando como un ideal, pero en un apuro, a menudo puede ayudar
Mikeage
2

Prueba vimdiff. Aquí hay un ejemplo con archivos .ini.

chmeee
fuente
¡MIS OJOS! .X por defecto! ¡Cámbialos!
Joseph Kern
1
Sí, es muy feo, lo siento. Pero no creo que tenga nada que ver con .Xdefaults ya que esta es la consola. Buscaré en la documentación de vim para cambiar estos colores :).
chmeee
1
en caso de que alguien más esté interesado, vimdiff está disponible a través de vim.org. VimDiff está bien, pero falla cuando se intercambian líneas y luego el valor es una coincidencia más cercana que la cadena antes del signo igual. En este caso, VimDiff mostrará la diferencia en la parte anterior al signo igual, que no es lo que quiero.
ssollinger
0

Siempre me ha gustado Winmerge, muy personalizable.

Dave
fuente
WinMerge es excelente, pero no trata muy bien los archivos de configuración (archivos .ini). Es mejor que otros (como WinDiff), pero mi pregunta era para una herramienta que compara específicamente los valores en archivos .ini. WinMerge no puede hacer esto.
ssollinger
1
Winmerge tiene una configuración para comparar bloques de texto que se han movido y son similares. Lo uso para comparar archivos web.config, pero supongo que son un poco más organizados que los archivos ini.
Dave
Utilizo WinMerge y hago una sustitución de expresiones regulares en cada archivo para eliminar los números antes de comparar ( [0-9]+=a =). Pero siempre tengo que descartar los archivos modificados. También estoy buscando una mejor solución.
djeidot