diff · + добавлено · − удалено
Сравнение текстов
Построчное сравнение «red, green, blue» с «red, yellow, blue» даёт 1 добавленную строку, 1 удалённую и 2 без изменений. Вставьте два текста, чтобы увидеть все различия.
- +1 −1 =2
- @@ -1,3 +1,3 @@
Каждая добавленная строка отмечена знаком +, а каждая удалённая — знаком −, а также цветом, и изменённые символы внутри заменённой строки подсвечиваются. Небольшие тексты сравниваются по мере ввода; текст не покидает эту вкладку.
Scanned by NortonTM Safe Web
Коротко
- Цена
- Без оплаты
- Аккаунт
- Не нужен
- Загрузка
- Не применимо — оба текста остаются во вкладке
- Метод
- Наибольшая общая подпоследовательность строк, изменённые символы подсвечиваются
- Вывод
- Строки с цветом и маркерами или unified diff с 3 строками контекста
- Ограничение размера
- 5,000 строк и 5,000,000 символов на текст
Разобранное сравнение и влияние параметров
Таблицы получены тем же кодом, что и инструмент. Первая сравнивает два текста из трёх строк; вторая показывает, как параметры меняют результат для одной пары строк.
| Маркер | Строка |
|---|---|
| = | red |
| − | green |
| + | yellow |
| = | blue |
| Настройка | Добавлено строк | Удалено строк |
|---|---|---|
| Точно | 1 | 1 |
| Без учёта регистра | 1 | 1 |
| Без учёта пробелов | 1 | 1 |
| Без учёта регистра и пробелов | 0 | 0 |
Как сравнить два текста
Вставьте два текста
Поместите старый текст в поле «Исходный текст», а новый — в поле «Изменённый текст». Два коротких примера уже там. «Поменять местами» меняет поля местами, а «Очистить оба» очищает оба.
Выберите, что считать различием
Отметьте «Не учитывать регистр», чтобы считать «Hello» и «hello» одной строкой, и «Не учитывать пробелы», чтобы игнорировать пробелы по краям строки и повторяющиеся пробелы внутри неё. «Только изменения» сворачивает неизменённые строки, оставляя по 3 строки вокруг каждого изменения.
Прочитайте или скопируйте различия
Строки со знаком − есть только в исходном тексте, строки со знаком + — только в изменённом. Скопируйте unified diff, чтобы вставить его в сообщение или патч, или скачайте его как файл .diff.
Как работает сравнение
Оба текста делятся на строки, и инструмент находит наибольшую общую подпоследовательность строк: самый большой набор строк, которые встречаются в обоих текстах в одном порядке. Каждая строка вне этого набора считается удалённой (есть только в исходном тексте) или добавленной (есть только в изменённом), поэтому в различиях оказывается наименьшее возможное число изменённых строк. Если за удалённой строкой сразу следует добавленная, символы, которые между ними различаются, подсвечиваются.
Сравнение идёт по строкам, потому что именно строками меняются код, файлы конфигурации и списки, а построчное сравнение остаётся быстрым для тысяч строк. Перемещённая строка показывается один раз как удалённая и один раз как добавленная; изменённое слово показывается как заменённая строка с подсвеченными символами. Концы строк нормализуются, поэтому файл с переводами строк Windows совпадает с тем же файлом с переводами строк Unix. В каждом тексте может быть до 5,000 строк и 5,000,000 символов. Вывод unified diff использует общий формат: заголовок из --- и +++, затем блоки @@ с 3 строками контекста.
Вопросы о сравнении текстов
Как diff определяет, что изменилось?
Он находит наибольшую общую подпоследовательность строк, то есть наибольшее число строк, которые оба текста содержат в одном порядке. Строки вне её помечаются знаком −, если они есть только в исходном тексте, и знаком +, если только в изменённом. «red, green, blue» против «red, yellow, blue» сохраняет red и blue, удаляет green и добавляет yellow.
Почему сравнение идёт по строкам, а не по словам?
Строками устроены код, журналы, списки и файлы конфигурации, а результат по строкам достаточно короток, чтобы его читать. В заменённой строке подсвечиваются различающиеся символы, поэтому замену одного слова в длинном предложении легко заметить.
Что означают цвета и знаки + и −?
Зелёная строка со знаком + добавлена в изменённый текст. Красная строка со знаком − удалена из исходного. Строки без знака одинаковы в обоих. Знаки напечатаны наряду с цветом, поэтому результат читается и тогда, когда красный и зелёный не различаются.
Как игнорировать различия в регистре или пробелах?
Отметьте «Не учитывать регистр», чтобы сравнивать строки без учёта заглавных букв, и «Не учитывать пробелы», чтобы игнорировать пробелы в начале и конце строки и считать любую последовательность пробелов внутри неё одним пробелом. Если отмечены оба, «Hello World» и «hello world» — одна и та же строка.
Какого размера могут быть два текста?
В каждом тексте может быть до 5,000 строк и 5,000,000 символов. Текст из 5,000 строк при сравнении с собственной копией с изменённым порядком обрабатывается на современном компьютере гораздо быстрее секунды. Если всего больше 100,000 символов, сравнение начинается по нажатию «Сравнить», а не по мере ввода.
Что такое unified diff?
Это текстовый формат, который используют diff и Git. Он начинается со строк --- и +++ с названиями двух текстов, затем идёт по одному блоку на группу изменений. Блок начинается с заголовка вроде @@ -1,3 +1,3 @@, означающего 3 строки начиная с 1-й строки исходного текста и 3 строки начиная с 1-й строки изменённого, а каждая строка начинается с пробела, + или −.