Comment compter les différences entre les deux fichiers sur linux?
J'ai besoin de travailler avec des fichiers volumineux et doit trouver des différences entre les deux. Et je n'ai pas besoin les différents bits, mais le nombre de différences.
De trouver le nombre de lignes différentes je viens avec
diff --suppress-common-lines --speed-large-files -y File1 File2 | wc -l
Et il fonctionne, mais est-il une meilleure manière de le faire?
Et comment compter le nombre exact de différences (avec des outils standard comme bash, diff, awk, sed certains ancienne version de perl)?
Vous devez vous connecter pour publier un commentaire.
Que moins de 2 pour les deux noms de fichier en haut de la
diff
inscription. Format unifié est probablement un peu plus vite que les côte-à-côte.diff -U 0 file1 file2 | grep -c ^@
diff -U 0 file1 file2 | grep -v ^@ | tail -n +3 | wc -l
doit donner le nombre correct. Il exclut les noms de fichiers en haut de la sortie de la commande diff.Si vous voulez compter le nombre de lignes qui sont différentes d'utiliser ce:
N'est pas John la réponse de compter deux fois les différentes lignes?
grep -c ^@
au lieu degrep ^@ | wc -l
Si vous utilisez Linux/Unix, ce sujet de
comm -1 file1 file2
pour imprimer les lignes dans fichier1 qui ne sont pas dans fichier2,comm -1 file1 file2 | wc -l
de les compter, et de même pourcomm -2 ...
?comm
attend de ses arguments triés fichiers. Si cette suggestion ne peut être invoqué dans des cas particuliers. (Je pense qu'il serait facile d'écrire votre propre version decomm
utilisation de awk qui a travaillé pour ne pas triés à l'entrée, trop, mais doute que ce qui remplit l'esprit de la question d'origine plus.)Puisque chaque ligne de sortie diffère commence avec
<
ou>
caractère, je dirais ceci:En utilisant uniquement
\<
ou\>
dans la ligne de script, vous pouvez compter les différences dans l'un des fichiers.Je crois que la bonne solution est dans ce réponse, c'est:
Si vous travaillez avec des fichiers avec des analogues de contenu qui doivent être triées de la même ligne-par-ligne (comme les fichiers CSV décrivant des choses similaires) et vous souhaitez trouver 2 différences dans les fichiers suivants:
vous pouvez implémenter en Python comme ceci: