Если выполнение сравнения построчно допустимо, то следующее скажет, какие строки дублируются в файле 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
для разбиения текста на абзацы (выделенные пустыми строками), преобразует символы новой строки в пробелы, а затем передает выходные данные, по одной строке на абзац, для сортировки и удаления для подсчета дублированных абзацев.
Выше было проверено с GNU awk
. Для других awk
метод определения пустых строк как границ абзаца (записи) может отличаться.
vimdiff
для вас здесь?