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.
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
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 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 ...
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