Сравнение больших файлов
Сравните два больших локальных файла построчно или побайтно — с настройками пробелов, концов строк и кодировки и отчётом для скачивания.
Введённые данные и файлы остаются в браузере
Файлы
Исходный файл
Любой локальный файл. Он остаётся на этом устройстве.
Изменённый файл
Любой локальный файл. Он остаётся на этом устройстве.
Оба файла читаются в Web Worker блоками по 1 МиБ. От каждой строки хранится только хэш, а текст на экране дочитывается из файлов. Ничего не загружается и не сохраняется.
Выберите исходный и изменённый файл, чтобы увидеть изменённые строки или диапазоны байтов.
Отчёт
До 10 000 000 строк в файле. Память — около 8 байт на строку и ещё до 9 байт на время сопоставления. Строки сравниваются по хэшам после правил пробелов и концов строк. Таблица обрезает строку на 2000 символах; отчёт пишет строки целиком, до 16 МиБ. В бинарном режиме сохраняется 100 000 диапазонов.
На этой странице
Сравнение больших файлов сопоставляет два локальных файла, которые не помещаются в текстовое поле: многогигабайтные логи, выгрузки CSV, SQL-дампы или сборки. Текстовые файлы сравниваются построчно, бинарные — побайтно; результат — виртуализированная таблица изменений и отчёт для скачивания.
Подробное описание функциональности
Оба файла читаются блоками по 1 МиБ внутри Web Worker. Текст не хранится: каждая строка превращается в 64-битный хэш, поэтому файл стоит около 8 байт на строку. Настройки пробелов и концов строк применяются при вычислении хэша: сравнивать точно, не учитывать пробелы в конце строки, не учитывать их количество или не учитывать совсем; CRLF и LF можно считать одинаковым концом строки. UTF-8 и UTF-16 хэшируются как символы Юникода, поэтому один и тот же текст в обеих кодировках совпадает. Устаревшие кодировки вроде Windows-1251 или Shift_JIS сравниваются по байтам.
Сопоставление строк сначала пропускает общее начало и конец, затем закрепляется на строках, которые встречаются ровно один раз в обоих файлах (patience diff), и выравнивает промежутки алгоритмом Майерса. Промежуток, на который ушло бы слишком много времени, показывается как одна замена, и страница об этом сообщает. Из файлов дочитываются только строки на экране, поэтому прокрутка миллионов изменённых строк остаётся лёгкой.
Бинарный режим сравнивает байты блоками и перечисляет все различающиеся диапазоны со смещением, длиной и первыми 16 байтами каждой стороны; разница в размере становится последним диапазоном. Отчёт для текста — unified diff (.diff), для бинарных файлов — CSV. Оба записываются в выбранный файл потоком.
Практические примеры
Два лога: лог на 2 миллиона строк против копии, где у 40 строк уровень сменился с INFO на WARN, показывает 40 удалённых и 40 добавленных строк в отдельных блоках с тремя строками контекста.
Копии из Windows и Unix: файл с CRLF против той же копии с LF не даёт различий, пока включена настройка концов строк; выключите её — и отличаться будет каждая строка.
Другие отступы: выберите «Не учитывать количество пробелов», и строки, которые отличаются только пробелами или табуляцией между словами, считаются одинаковыми.
Образы прошивки: в бинарном режиме две сборки, у которых отличаются строка версии и контрольная сумма, дают два коротких диапазона со старыми и новыми байтами в hex.
Как использовать этот инструмент
Выберите файлы
Перетащите или выберите исходный и изменённый файл. Сравнение начинается, как только выбраны оба.
Задайте настройки
Выберите «Определить», «Строки текста» или «Байты», кодировку, правило для пробелов и учёт концов строк. Нажмите «Сравнить», чтобы запустить сравнение с новыми настройками.
Посмотрите изменения
Сводка показывает число удалённых и добавленных строк и блоков изменений. Кнопки «Предыдущее изменение» и «Следующее изменение» переходят между блоками, а поле «Строк контекста» задаёт, сколько неизменённых строк показывать вокруг них.
Скачайте отчёт
Скачайте unified diff для текста или CSV с диапазонами байтов для бинарных файлов.
Советы и лучшие практики
- «Определить» переключается на бинарный режим, если в первых 8 КиБ любого файла есть байт NUL, кроме файлов с BOM UTF-16.
- Строки сравниваются по хэшу. Совпадение 64-битных хэшей у двух разных строк крайне маловероятно, а таблица всегда показывает настоящий текст.
- Переставленные блоки текста видны как удаление и добавление, как в diff -u.
- «Отмена» сразу останавливает обработчик; файлы остаются выбранными.
- Для быстрого сравнения двух коротких фрагментов подойдёт «Просмотр различий текста» — он подсвечивает изменённые слова внутри строк.