Чтобы сравнить два текстовых файла на Mac перед объединением правок, сначала сделайте отдельные копии обеих версий, а затем проверьте их различия с помощью команды diff в Терминале или визуального инструмента сравнения, такого как Visual Studio Code или BBEdit. Сравнение покажет, что именно изменилось; вам останется решить, какие правки сохранить, и записать объединенный результат в новый файл, пока вы его не проверите.
Подготовьте две версии
Поместите оба файла в легкодоступное место, например на Рабочий стол или во временную папку. Убедитесь, какой из них является более ранней (базовой) версией, а какой содержит более свежие правки. Если оба файла изменялись независимо друг от друга, учитывайте, что ни один из них не обязательно является правильной финальной версией.
Перед объединением продублируйте исходные файлы в Finder или используйте Файл > Дублировать в приложении, которое это поддерживает. Дайте копиям понятные имена, например draft-original.txt, draft-edited.txt, а позже — draft-merged.txt. Это позволит вам вернуться назад, если вы случайно перезапишете содержимое. Убедитесь, что оба файла являются простым текстом (plain text) и что вы сравниваете именно нужную пару; форматированные документы могут содержать структуру, которую сравнение простого текста не отображает.
Сравните файлы в Терминале с помощью diff
Для быстрого сравнения через командную строку macOS откройте Терминал и введите diff -u , оставив пробел после команды. Перетащите первый файл из Finder в окно Терминала, поставьте пробел, перетащите второй файл и нажмите Return. Команда сравнит содержимое двух файлов и выведет унифицированный дифференциал (unified diff) с окружающим контекстом. Первый путь — это исходная версия, второй — версия, которая с ней сравнивается. Страница руководства по diff от Apple документирует эту команду и параметр унифицированного вывода.
diff -u /path/to/first.txt /path/to/second.txt
В выводе строки, начинающиеся со знака -, присутствуют в первом файле, но отсутствуют во втором; строки, начинающиеся со знака +, есть во втором, но отсутствуют в первом. Строки без маркеров служат контекстом. Заголовок, начинающийся с @@, обозначает примерный диапазон строк для измененного участка. Если Терминал не выводит никакой информации о различиях, значит, файлы идентичны. Результат, сообщающий, что файлы различаются, но не показывающий читаемых строк, может означать, что входные данные не распознаются как обычный текст.
Этот вывод предназначен для анализа, а не для использования в качестве объединенного документа. Не вставляйте маркеры diff в финальный файл. Изучайте каждый блок изменений в контексте, решайте, что должно войти в объединенную версию, а затем редактируйте копию в текстовом редакторе и сохраняйте ее под новым именем. Если в файлах много пересекающихся правок, обычно проще использовать визуальный редактор сравнения (diff-редактор).
Используйте визуальное сравнение для более удобного анализа
В Visual Studio Code откройте один файл, затем откройте командную палитру (Command Palette) и выберите File: Compare Active File With... (Файл: сравнить активный файл с...), чтобы выбрать второй. Либо в Проводнике (Explorer) щелкните правой кнопкой мыши по одному файлу и выберите Select for Compare (Выбрать для сравнения), затем щелкните правой кнопкой мыши по другому и выберите Compare with Selected (Сравнить с выбранным). VS Code откроет редактор различий для анализа изменений. В его документации также описано сравнение активного файла с сохраненной версией или буфером обмена. Эти параметры перечислены в инструкциях по сравнению файлов в Visual Studio Code.
BBEdit предлагает еще один удобный для Mac вариант: выберите Search > Find Differences, укажите два файла в окне сравнения и запустите процесс. В текущей сравнительной таблице возможностей программы среди функций указаны сравнение файлов и отображение различий на уровне символов. Доступная функция Find Differences описана в таблице возможностей BBEdit.
Какое бы приложение вы ни использовали, просмотрите результат сравнения от начала до конца. Похожие блоки текста могут смещаться при добавлении или удалении строк, поэтому не стоит считать, что визуально соседствующее изменение относится к той же самой правке. Также проверяйте пунктуацию, пустые строки, орфографию и повторяющиеся фрагменты: мелкие различия могут изменить смысл или форматирование.
Объединяйте внимательно и проверяйте сохраненный результат
Последовательно проработайте каждое изменение и решите, оставить ли первый вариант, второй или их комбинацию. Когда в обоих файлах изменено одно и то же предложение или абзац, прочитайте оба варианта правок вместе с окружающим текстом и разрешите конфликт вручную. Сравнение двух файлов выявляет различия; оно не может определить, какая из независимо отредактированных версий передает нужный финальный смысл.
Сохраните объединенный текст в третий файл. Затем снова откройте этот сохраненный файл и просмотрите измененные области. Если вы хотите убедиться, что он в точности совпадает с одним из исходников, сравните сохраненный результат с этим исходником с помощью того же инструмента. Не удаляйте оригиналы, пока не будете полностью удовлетворены результатом.
Этот рабочий процесс рассчитан на два текстовых файла. Визуальное сравнение не обязательно является трехсторонним слиянием (three-way merge): когда два человека редактировали общую базовую версию, этот исходный вариант может также понадобиться вам, чтобы отличить независимые дополнения от конфликтующих правок. Если файлы содержат форматированный текст (rich-text) или созданы в специализированных приложениях, используйте встроенные функции сравнения или рецензирования этих приложений, если они доступны; преобразование или экспорт таких документов в простой текст может привести к потере форматирования или структуры.
Источники
DIFF(1) — man-страницы Xcode
Basic editing: Compare files — Visual Studio Code
BBEdit Comparison Chart — Bare Bones Software