Копировать только разницу (kdiff, winmerge, любой инструмент, похожий на diff)
Есть ли возможность копирования ТОЛЬКО разницы двух файлов? Как в winmerge, но я не могу найти эту опцию
Как и на этом экране, я хочу скопировать только "желтую часть". Конечно, я могу сделать это вручную, но в большом файле это не так уж смешно:-)
6 ответов
WinMerge имеет встроенный и простой способ генерировать такие "только для сравнения" файлы, которые они называют "патчи".
Нажмите "Инструмент", затем "Создать патч..." и введите, где вы хотите сохранить результат:
Вы получите (для вашего примера) файл
4,8c4,8
< HELLO WORLD
< HELLO WORLD
< HELLO WORLD
< HELLO WORLD
< HELLO WORLD
---
>
>
>
>
>
Это использует стандартный, компактный способ представления различий и легко манипулировать.
Вот как вы делаете это в WinMerge:
- Отключите любые строки контекста: [View] > [Context] > [0 Lines].
- Выберите область интереса: нажмите на панель.
- Выделить весь текст: [Изменить]> [Выбрать все] или [Ctrl]+[a].
- Выбор копии: [Редактировать]> [Копировать] или [Ctrl]+[c].
Существует бесплатное приложение под названием DiffMerge.
Примечание. Параметр "Показывать только различия" будет отключен до тех пор, пока вы не переключитесь на нижнюю вкладку с пометкой "Ссылочный вид" ("Файлы как загруженные"). После этого вы сможете использовать представление "Только различия".
В winmerge есть очень приятная особенность - в инструментах вы можете сгенерировать raport в html с помощью Tools-> Raport. После этой операции вы можете разобрать сгенерированный html- и таким образом получить только различие (но, возможно, это не самое простое решение)
Большинство инструментов сравнения имеют функцию генерации патчей, которая может работать с буфером обмена, это в основном то, что вам нужно, поскольку вы получите только измененный текст слева и справа (если вы удалите строки контекста). Если вам нужны только изображения одной стороны, вы можете легко отфильтровать патч по первому символу (удалить все строки, используя редактор, сопоставив что-то вроде ^[+>].*$
сохранить удаленные строки или ^[-<].*$
сохранить добавленные строки).
Инструмент diff в командной строке выведет только то, что grep
и одно из приведенных выше регулярных выражений вы сделали.
WinMerge предлагает "Копировать влево" или "Копировать вправо в...", которые будут копировать только различия в выбранную папку.