Есть ли удобный способ идентифицировать дубликаты или почти повторяющиеся блоки текста в файле?
Я хочу использовать это для выявления дублирования кода. Похоже, есть специальные программы с этой возможностью, но я не собираюсь вовлекаться в это.
Я надеюсь, что есть инструмент, похожий на diff, который может сделать своего рода "внутри файла" diff. Еще лучше было бы в пределах одного файла vimdiff.
text-processing
diff
vimdiff
Praxeolitic
источник
источник
vimdiff
для вас здесь?Ответы:
Если выполнение сравнения построчно допустимо, то следующее скажет, какие строки дублируются в файле
text
и сколько раз каждая из них появляется:Например,
Используя обычные инструменты Unix, это может быть расширено, если предположить, что формат входного теста не слишком сложен, для сравнения по пунктам или по предложениям.
Нахождение повторяющихся абзацев
Предположим, что наш файл
text
содержит:Следующая команда определяет, какие абзацы появляются более одного раза:
Он используется
awk
для разбиения текста на абзацы (выделенные пустыми строками), преобразует символы новой строки в пробелы, а затем передает выходные данные, по одной строке на абзац, для сортировки и удаления для подсчета дублированных абзацев.Выше было проверено с GNU
awk
. Для другихawk
метод определения пустых строк как границ абзаца (записи) может отличаться.источник