Якщо порівняння по черзі є прийнятним, то нижче буде сказано, які рядки дублюються у файлі textта скільки разів кожен з них з'являється:
sort text | uniq -c | grep -vE '^\s*1 '
Як приклад,
$ cat text
alpha
beta
alpha
gamma
alpha
beta
$ sort text | uniq -c | grep -vE '^\s*1 '
3 alpha
2 beta
Використовуючи звичайні інструменти unix, це можна розширити, якщо припустити, що вхідний тестовий формат не надто складний, до порівнянь абзац за пунктом або речення.
Знаходження повторних абзаців
Припустимо, що наш файл textмістить:
This is a paragraph.
This is another
paragraph
This is
a paragraph.
Last sentence.
Наступна команда ідентифікує, що показує, які абзаци з’являються не один раз:
$ awk -v RS="" '{gsub(/\n/," "); print}' text | sort | uniq -c | grep -vE '^\s*1 '
2 This is a paragraph.
Це використовує awkдля розбиття тексту на абзаци (окреслені порожніми рядками), перетворення нових рядків у пробіли, а потім передає вихід, по одному рядку за абзацом, для сортування та uniq для підрахунку дублюваних абзаців.
Вищезазначене було випробувано з GNU awk. Для інших awkметодів визначення порожніх рядків як меж абзацу (запису) може відрізнятися.
vimdiffтут не робиться для вас?