Newline-ignoring diff/diff для нескольких строк /reflow -ignoring diff

Знает ли кто-нибудь об инструменте, подобном diff, который может показать мне изменения между двумя текстовыми файлами, но игнорировать изменения в пробеле, включая символы новой строки?

Вот пример:

the quick brown fox jumped over the lazy bear.  the quick brown fox
jumped over the lazy bear.  the quick brown fox jumped over the lazy
bear.  the quick brown fox jumped over the lazy bear.
quick brown fox jumped over the lazy bear.  the quick brown fox jumped
over the lazy bear.  the quick brown fox jumped over the lazy bear.
the quick brown fox jumped over the lazy bear.

Все, что я сделал, это удалить одно слово и оплатить его, но "diff -b" обнаруживает изменение на каждой строке (как и должно быть, я не говорю, что это ошибка в diff). Но для больших файлов LaTeX это серьезная проблема; измените одно слово в длинном абзаце, и разница, которую вы получите, в основном бесполезна.

Кстати, я знаю, что для этого требуется больше вычислительной мощности, чем обычные линии-атомарные diff. Я делаю это только на небольших людских файлах и рад долго ждать, если придется.

Ответ 1

wdiff выполняет одноуровневое выравнивание.

Для легко читаемого дисплея в терминале запустите

 wdiff -al <file1> <file2> | less

Это покажет (по крайней мере, в моей системе) вставки в <file2> выделенные жирным шрифтом и удаление из <file2> подчеркнуто.

Ответ 2

Один из вариантов - сделать это, разделив весь файл на слова. Не 100% тот же результат в краях знания контекста, но очень точно настроенный на тот тип изменений, о котором вы заботитесь.

Пример:

cat file1 | perl5.8 -e '{s/\s+/\n/g;}' > file1.split_words
cat file2 | perl5.8 -e '{s/\s+/\n/g;}' > file2.split_words
diff file1.split_words file2.split_words

Вы можете сделать еще лучше, если текст имеет специальные свойства, а точнее, reflow происходит только в пределах абзаца, который определяется как две строки новой строки в строке - просто замените все одиночные строки новой строки пробелами и запустите регулярный diff -w по результатам.