Si faire la comparaison ligne par ligne est acceptable, alors ce qui suit indiquera quelles lignes sont dupliquées dans le fichier text
et combien de fois chacune apparaît:
sort text | uniq -c | grep -vE '^\s*1 '
Par exemple,
$ cat text
alpha
beta
alpha
gamma
alpha
beta
$ sort text | uniq -c | grep -vE '^\s*1 '
3 alpha
2 beta
En utilisant les outils Unix habituels, cela pourrait être étendu, en supposant que le format de test d'entrée n'est pas trop complexe, aux comparaisons paragraphe par paragraphe ou phrase par phrase.
Recherche de paragraphes répétés
Supposons que notre fichier text
contienne:
This is a paragraph.
This is another
paragraph
This is
a paragraph.
Last sentence.
La commande suivante identifie les paragraphes qui apparaissent plusieurs fois:
$ awk -v RS="" '{gsub(/\n/," "); print}' text | sort | uniq -c | grep -vE '^\s*1 '
2 This is a paragraph.
Cela permet awk
de décomposer le texte en paragraphes (délimités par des lignes vides), de convertir les sauts de ligne en espaces, puis de passer la sortie, une ligne par paragraphe, pour trier et uniq pour compter les paragraphes dupliqués.
Ce qui précède a été testé avec GNU awk
. Pour les autres awk
, la méthode de définition des lignes vierges comme limites de paragraphe (enregistrement) peut différer.
vimdiff
vous convient pas ici?