Перейти к содержимому
Alex Kovalev

Сравнение текстов

Две версии одного и того же, и нужно понять, что поменялось. Вставьте обе.

Работает в вашем браузере. Всё, что вы сюда вставляете или бросаете, никуда не загружается.

Текстовый файл можно просто перетащить на любое поле.

Вид
Подсветка

1 строка добавлена, 1 удалена, 3 изменены

– из 2
1# Будничный хлеб на закваске1# Будничный хлеб на закваске
2мука: 500 г хлебопекарной2мука: 450 г хлебопекарной + 50 г цельнозерновой
3вода: 350 г (70%)3вода: 375 г (75%)
4автолиз: 30 мин
5соль: 10 г4соль: 10 г
6закваска: 100 г, подкормлена вечером5закваска: 100 г, подкормлена вечером
7брожение: 4 ч при комнатной температуре6брожение: 5 ч при комнатной температуре
7растяжка и складывание каждые 30 мин, 4 раза
8формовка, потом в холодильник на ночь8формовка, потом в холодильник на ночь
9выпечка: 250 °C, 20 мин под крышкой, 25 мин без9выпечка: 250 °C, 20 мин под крышкой, 25 мин без

Клавиша j ведёт к следующему изменению, k к предыдущему (когда курсор не в поле ввода).

Как пользоваться

4 шага
  1. Вставьте старую версию в поле Было, новую в поле Стало. Или перетащите текстовый файл прямо на поле.
  2. Посмотрите на итоговую строку и переходите между изменениями кнопками Дальше и Назад или клавишами j и k.
  3. Переключите Подсветку на слова или символы, чтобы увидеть, что именно поменялось внутри строки. Если переформатированный код заглушает настоящие правки, включите Игнорировать пробелы.
  4. На длинных файлах включите Скрыть одинаковые строки. Кнопка Скопировать unified diff даст патч, который можно вставить в задачу или в код-ревью.

Что он делает

1 мин чтения

Тексты сравниваются построчно алгоритмом Майерса, тем же, что git diff использует по умолчанию. Потом внутри каждой пары изменённых строк сравниваются слова или символы. Удалённые строки помечены −, добавленные +, так что красный от зелёного отличать не обязательно.

Пробелы и регистр букв можно игнорировать. Переводы строк Windows (CRLF) считаются обычными LF, поэтому файл, сохранённый в Windows, не подсвечивается целиком. А вот отсутствие перевода строки в самом конце файла считается изменением, как и в git.

Кнопка копирования выдаёт стандартный unified diff: заголовки --- и +++, потом блоки @@ с тремя строками контекста. Его понимают и patch, и git apply. Файлы до 20 МБ открываются прямо с диска. Большие тексты сравниваются в фоновом воркере, так что страница не подвисает, пока вы печатаете.

Если git показывает не diff, а конфликт слияния, поставьте merge.conflictStyle в zdiff3. Между двумя сторонами появится общий предок, и станет видно, что на самом деле поменяла каждая сторона. Пример есть в заметке про zdiff3.

Вопросы

5 вопросов

Как сравнить два файла и найти различия?

Перетащите один файл на поле Было, а второй на Стало: браузер прочитает их локально, ничего не загружается. В терминале то же самое делает diff -u old.txt new.txt, или git diff --no-index old.txt new.txt, если нужны цвета git.

Почему изменёнными помечены все строки?

Почти всегда дело в пробелах: табы против пробелов, пробелы в конце строк или форматтер, который переотступил весь файл. Включите Игнорировать пробелы. Если одинаковые на вид строки всё равно отличаются, переключите подсветку на символы: неразрывный пробел или «умная» кавычка подсветится одним символом.

Работает ли сравнение с текстом на иврите, арабском или русском?

Да. Каждая строка выбирает направление сама, поэтому иврит и арабский читаются справа налево, а код остаётся слева направо. Слова разбиваются по буквам Unicode, так что кириллица и иврит подсвечиваются целыми словами.

Можно ли сравнить два документа Word или PDF?

Напрямую нет. .docx — это zip-архив, а PDF — описание страницы, так что инструмент видит байты, а не предложения: он либо откажется от файла как от двоичного, либо покажет мусор. Скопируйте текст из каждого документа и вставьте в два поля или сначала сохраните оба как обычный .txt. Для правок внутри самого Word, с форматированием, есть Рецензирование → Сравнить.

Как сравнить два списка и найти, чего не хватает?

Сначала отсортируйте оба списка, по одному элементу на строку, и только потом вставляйте. Строки, которые есть только в первом списке, помечены −, только во втором — +. Без сортировки те же элементы в другом порядке превратятся в кашу из удалений и добавлений. Отсортируйте колонку в Excel или Google Таблицах или выполните sort list.txt в терминале, а если Apple и apple для вас одно и то же, отметьте Игнорировать регистр.

Ещё инструменты на стене