Копировать только разницу (kdiff, winmerge, любой инструмент, похожий на diff)

Есть ли возможность копирования ТОЛЬКО разницы двух файлов? Как в winmerge, но я не могу найти эту опцию

Как и на этом экране, я хочу скопировать только "желтую часть". Конечно, я могу сделать это вручную, но в большом файле это не так уж смешно:-)

6 ответов

WinMerge имеет встроенный и простой способ генерировать такие "только для сравнения" файлы, которые они называют "патчи".

Нажмите "Инструмент", затем "Создать патч..." и введите, где вы хотите сохранить результат:

Вы получите (для вашего примера) файл

4,8c4,8
< HELLO WORLD
< HELLO WORLD
< HELLO WORLD
< HELLO WORLD
< HELLO WORLD
---
> 
> 
> 
> 
> 

Это использует стандартный, компактный способ представления различий и легко манипулировать.

Вот как вы делаете это в WinMerge:

  1. Отключите любые строки контекста: [View] > [Context] > [0 Lines].
  2. Выберите область интереса: нажмите на панель.
  3. Выделить весь текст: [Изменить]> [Выбрать все] или [Ctrl]+[a].
  4. Выбор копии: [Редактировать]> [Копировать] или [Ctrl]+[c].

Существует бесплатное приложение под названием DiffMerge.

Примечание. Параметр "Показывать только различия" будет отключен до тех пор, пока вы не переключитесь на нижнюю вкладку с пометкой "Ссылочный вид" ("Файлы как загруженные"). После этого вы сможете использовать представление "Только различия".

Разница с содержанием

Только разница

В winmerge есть очень приятная особенность - в инструментах вы можете сгенерировать raport в html с помощью Tools-> Raport. После этой операции вы можете разобрать сгенерированный html- и таким образом получить только различие (но, возможно, это не самое простое решение)

Большинство инструментов сравнения имеют функцию генерации патчей, которая может работать с буфером обмена, это в основном то, что вам нужно, поскольку вы получите только измененный текст слева и справа (если вы удалите строки контекста). Если вам нужны только изображения одной стороны, вы можете легко отфильтровать патч по первому символу (удалить все строки, используя редактор, сопоставив что-то вроде ^[+>].*$ сохранить удаленные строки или ^[-<].*$ сохранить добавленные строки).

Инструмент diff в командной строке выведет только то, что grep и одно из приведенных выше регулярных выражений вы сделали.

WinMerge предлагает "Копировать влево" или "Копировать вправо в...", которые будут копировать только различия в выбранную папку.

Другие вопросы по тегам