Jeśli wykonanie porównania linia po linii jest dopuszczalne, następujące informacje powiedzą, które wiersze są duplikowane w pliku texti ile razy każdy z nich się pojawia:
sort text | uniq -c | grep -vE '^\s*1 '
Jako przykład,
$ cat text
alpha
beta
alpha
gamma
alpha
beta
$ sort text | uniq -c | grep -vE '^\s*1 '
3 alpha
2 beta
Za pomocą zwykłych narzędzi uniksowych można to rozszerzyć, zakładając, że format testu wejściowego nie jest zbyt skomplikowany, do porównań akapit po akapicie lub zdania po zdaniu.
Znajdowanie powtarzających się akapitów
Załóżmy, że nasz plik textzawiera:
This is a paragraph.
This is another
paragraph
This is
a paragraph.
Last sentence.
Następujące polecenie wskazuje, które akapity pojawiają się więcej niż jeden raz:
$ awk -v RS="" '{gsub(/\n/," "); print}' text | sort | uniq -c | grep -vE '^\s*1 '
2 This is a paragraph.
Służy to awkdo dzielenia tekstu na akapity (oznaczone pustymi liniami), konwertuje nowe wiersze na spacje, a następnie przekazuje dane wyjściowe, jeden wiersz na akapit, w celu sortowania i unikania w celu zliczania zduplikowanych akapitów.
Powyższe zostało przetestowane z GNU awk. W przypadku innych awkmetoda definiowania pustych linii jako granic akapitu (zapisu) może się różnić.
vimdiffnie zrobisz?