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/^/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 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