0
votes

Comment comparer le contenu de deux scripts

J'ai deux fichiers, ce sont des fichiers Python Mako. Mais je pense que dans mon cas, ce n'est pas vraiment important le format des fichiers tant qu'ils sont des scripts.

J'ai un fichier, appelons-le A et un autre fichier, permet de l'appeler B .

Je veux savoir ce qui est dans A qui n'est pas dans B ou inversement.

J'ai pensé à utiliser diff mais je pense que vérifie la ligne de fichiers par ligne SO Line1 contre Line1 et Line2 contre la ligne2 etc. Cependant, j'ai remarqué que les fichiers que je cherche ont des vides différents lignes. Donc, par exemple, Line1 in A est identique à la ligne2 dans B et ligne1 dans B est juste vide.

est la commande comm la voie à suivre? Si c'est le cas, quelles options associées à comm devrais-je utiliser?


2 commentaires

DIFF -B AFILE BILE


diff fait pas go line-by-ligne; Ses algorithmes tentent de générer le plus petit ensemble d'éditions possibles au fichier-A qui produisent des fichiers-B (et dans certains modes génère littéralement un script ed pour édicter ce changement).


3 Réponses :


0
votes

Si vous voulez un outil de diff-diff (au lieu d'enregistrer le diff pour un fichier d'exemple), vous pouvez utiliser VIMDIFF FEECHE DE VIMDIFF . Si vous travaillez très bien, même pour les diffèmes géants et cela essaie de sauter des lignes non liées (j'ai testé avec plus de 100 000 lignes).


0 commentaires

0
votes

Comme la réponse précédente suggère, vous devez probablement utiliser diff si vous comparez scripts d'un langage de programmation, où la commande est importante.

Cependant, si vous cherche simplement la survenue d'une chaîne ou d'un jeton, quel que soit le contexte, alors commun peut être utilisé, mais les fichiers d'entrée doivent être triés.

Utilisation: Comm. File1 File2

  • Utilisez l'option -1 pour supprimer les lignes uniquement dans fichier1
  • Utilisez l'option -2 pour supprimer les lignes uniquement dans File2
  • Voir MAN COMM pour plus de détails

    Premièrement, obtenez la version triée des fichiers A et b : xxx

    pour trouver lignes dans un non in b: xxx

    pour trouver des lignes dans b non pas dans: xxx


2 commentaires

Pourquoi l'OP veut-il vouloir trier les scripts?


Dépend de la nécessité de comparer; S'il / elle cherche un jeton manquant ou une chaîne, comm fonctionnera. Si c'est un vrai script de programmation, alors diff -uaw est probablement le meilleur moyen.



1
votes

J'ai pensé à utiliser diff mais je pense que vérifie la ligne de fichiers par ligne SO Line1 contre Line1 et Line2 contre la ligne2 etc. Cependant, j'ai remarqué que les fichiers que je cherche ont des vides différents lignes. Donc, par exemple, Line1 in A est identique à la ligne2 dans B et ligne1 dans B est juste vide.

diff poignées tout simplement bien. Utilisez diff .


1 commentaires

Si vous ne voulez pas voir des lignes vides, utilisez -w pour ignorer les espaces blancheurs, y compris les lignes vides.