1 votes

Outil de diffusion qui permet de forcer certaines lignes à correspondre

J'ai des fichiers que je veux comparer, et j'aurais besoin d'un moyen de forcer les lignes à correspondre pour que l'algorithme choisisse correctement le bloc à comparer.

Par exemple : FICHIER1

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

FICHIER2

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

Quels que soient les outils que j'utilise, je ne peux pas forcer une correspondance parfaite sur la ligne avec "test", et comme le contenu des blocs est similaire, la correspondance est toujours incorrecte.

Voir les images ci-dessous : Comparez Notepad++ Winmerge

Meld et diff n'ont pas fonctionné non plus.

Gracias

1voto

Mark Stosberg Points 3665

diff est un algorithme basé sur les lignes, mais il semble que ce que vous voulez faire correspondre ne sont pas des lignes, mais des blocs de lignes.

Une possibilité est d'utiliser une étape intermédiaire pour mettre chaque bloc sur une ligne en joignant les blocs de la ligne ensemble, puis vous pourriez ensuite utiliser diff sur le résultat.

git diff qui supporte 4 algorithmes de diff'ing différents, et vous pouvez différencier deux fichiers même s'ils ne sont pas dans un repo 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.

Cependant, en testant vos fichiers, tous les algorithmes ont produit le même résultat que diff serait.

Il existe d'autres outils pour différencier des formats structurés, comme XML ou JSON, les différences par blocs que vous souhaitez ne sont ni basées sur les lignes ni sur une autre structure formelle.

En fin de compte, je pense que pour qu'un algorithme de diff'ing fonctionne, vos données doivent être basées sur des lignes ou un autre format formel.

-1voto

MattX Server Points 1

TotalCommander vous aidera (comparer par contenu)

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X