Le moyen le plus rapide de trouver des différences entre deux fichiers sous Unix?

Je veux trouver la différence entre deux fichiers et ensuite mettre uniquement les différences dans un troisième fichier. J’ai vu différentes approches utilisant awk, diff et comm. Y en a-t-il plus?

par exemple. Comparer deux fichiers ligne par ligne et générer la différence dans un autre fichier

par exemple. Copier les différences entre deux fichiers dans unix

J’ai besoin de savoir quel est le moyen le plus rapide de trouver toutes les différences et de les répertorier dans un fichier pour chacun des cas ci-dessous –

Case 1 - file2 = file1 + extra text appended. Case 2 - file2 and file1 are different. 

Tu pourrais essayer..

 comm -13 <(sort file1) <(sort file2) > file3 

ou

 grep -Fxvf file1 file2 > file3 

ou

 diff file1 file2 | grep "<" | sed 's/^ file3 

ou

 join -v 2 <(sort file1) <(sort file2) > file3 

Une autre option:

 sort file1 file2 | uniq -u > file3 

Si vous voulez voir uniquement les entrées en double, utilisez l’option “uniq -d”:

 sort file1 file2 | uniq -d > file3 

Vous pouvez également essayer d’inclure des sums de type md5-hash ou des méthodes similaires pour déterminer s’il existe des différences. Ensuite, comparez uniquement les fichiers qui ont des hachages différents …

Cela fonctionnera vite:

Cas 1 – Fichier2 = Fichier1 + texte supplémentaire ajouté.

grep -Fxvf File2.txt File1.txt >> File3.txt

Fichier 1: 80 Lignes Fichier 2: 100 Lignes Fichier 3: 20 Lignes