Сравнение текстов (diff)
Построчный diff конфигов, логов и кода на LCS: подсветка добавленных и удалённых строк, символьный уровень в изменениях, копирование unified-вывода.
-
Построчный результат
Красным — удалённые строки, зелёным — добавленные; номера строк показаны слева от текста.
Diff считается в браузере
Сравнение — построчное на LCS-алгоритме, завершающий перевод строки и различия только в CRLF/LF не считаются изменением. Тексты не покидают вкладку: в ссылку «Поделиться» попадают лишь вид и опции, но не содержимое полей.
Последние сравнения
В историю сохраняются только сводки («+N −M») последних сравнений — содержимое текстов не записывается никогда. Записи живут в этом браузере и не попадают в экспорт на странице «Закладки».
Готовые примеры
Найдено: 5 из 5
- Сравнить два конфигаДва INI-файла с изменённым адресом, числом воркеров и новой строкой keepalive: построчный diff подсвечивает разницу и показывает её в unified-формате.
- Сравнить два логаЛог до и после перезапуска сервиса: удалённое предупреждение о медленном запросе и добавленная строка восстановления соединения.
- Символьный diff измененийКусок кода с правкой типа и кириллической строкой при включённой опции символьного diff: подсвечиваются отдельные знаки, а не строка целиком.
- Сравнить два фрагмента кодаДве версии функции: в правой добавлена промежуточная переменная. Построчный diff подсвечивает изменённую строку и даёт unified-вывод.
- Сравнить два YAML-файлаДве версии манифеста: во второй выросло число реплик и добавился порт. Diff показывает, чем отличаются конфиги развёртывания.
Что это и как пользоваться
Сравнение идёт по алгоритму наибольшей общей подпоследовательности: страница находит минимальный набор добавлений и удалений, а не переписывает весь текст заново. Результат смотрится в двух видах — двумя колонками (split) или одним блоком с метками + и - (unified).
В режиме split обе версии идут рядом, и одинаковые строки выравниваются по вертикали; в unified всё идёт одним блоком, как в git diff. Для коротких текстов разница косметическая, для длинных split удобнее при чтении глазами.
Внутри изменённой строки различия подсвечиваются по символам: если в длинной строке поменялся один символ, видно какой, а не «строка заменена целиком». Для этого идёт отдельный, более дешёвый проход с меньшим лимитом.
Unified-вывод печатается в привычном виде: шапка --- a/… и +++ b/…, затем ханки @@ -1,4 +1,5 @@ с префиксами +, - и пробелом. Такой блок можно сохранить в .patch и применить утилитой patch.
Лимиты заданы явно: до 500 000 знаков на входе, до 2 млн ячеек таблицы LCS для построчного режима и до 200 000 для посимвольного. За этими числами сравнение не запускается, чтобы вкладка не зависла.
Когда пригодится
- Сравнить две версии конфига и увидеть, какие строки реально изменились.
- Разобрать правку в логе или коде: подсветка показывает добавления и удаления отдельно.
- Найти перепутанный символ в длинной строке — посимвольный проход покажет его точнее построчного.
- Получить патч для коллеги в формате, который принимает patch или git apply.
- Сравнить два ответа API до и после релиза и увидеть, какие поля изменились.
- Сравнить текст до и после автозамены и убедиться, что она не задела лишние строки.
Чего инструмент не делает
- Текст сравнивается как последовательность символов, а не по смыслу: перестановка абзацев покажет удаление и вставку.
- Изменения не объединяются и патч не применяется — страница только показывает различия.
- Бинарные файлы не сравниваются: для них нет ни строк, ни символов в том виде, в каком их ждёт алгоритм.
- Очень большие тексты упираются в лимит ячеек, и вместо результата страница сообщает, что сравнение слишком тяжёлое.
Примеры
- Вход
строка А: apple birch строка Б: apple cherry- Выход
apple - birch + cherry- Вход
два блока кода- Выход
@@ -1,2 +1,2 @@ apple -birch +cherry