Si faire la comparaison ligne par ligne est acceptable, alors ce qui suit indiquera quelles lignes sont dupliquées dans le fichier textet 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 textcontienne:
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 awkde 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.
vimdiffvous convient pas ici?