Якщо порівняння по черзі є прийнятним, то нижче буде сказано, які рядки дублюються у файлі 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
тут не робиться для вас?