web-dev-qa-db-fra.com

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 ne mettre que les différences dans un troisième fichier. J'ai vu différentes approches utilisant awk, diff et comm. Y en at-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 sous 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 suivants - 

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

Tu pourrais essayer.. 

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

ou

grep -Fxvf file1 file2 > file3

ou

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

ou

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

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
11
pron

Vous pouvez également essayer d’inclure md5-hash-sums ou un résultat similaire pour déterminer s’il existe des différences. Ensuite, comparez uniquement les fichiers qui ont des hachages différents ...

1
P_M

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

0
James Bond 86