3

Есть ли способ сделать "чистый" экспорт различий между файлами? Не diff или даже отформатированный отчет ... просто чистый.CSV/.Экспорт XLS/etc.

Это для людей, которые не являются техническими; в нашей компании есть ряд нетехнических людей, которые могли бы действительно использовать что-то подобное. Они работают со списками рассылки и нуждаются в способе извлечения изменений между ревизиями списков.

Как программист, я знаю, что существует большое количество инструментов сравнения: WinDiff, BeyondCompare, FileMerge, diff командной строки и т.д. Но я не смог найти тот, который просто даст чистый экспорт различий. (Возможно, я просто что-то пропустил в одном из известных инструментов сравнения, которые я перечислил)

Пример...

FileA.csv

1000, Aaron
1001, Bob
1002, Chris
1004, Erin

FileB.csv

1000, Aaron
1001, Bob
1002, Chris
1003, Dolores
1004, Edward

Мы бы хотели экспортировать только измененные строки в ... "ChangesInFileB.csv"

1003, Dolores
1004, Edward

FWIW, ребята из службы поддержки Beyond Compare говорят, что они этого не предлагают.
http://www.scootersoftware.com/vbulletin/showthread.php?p=32298#post32298

Этот вопрос внешне похож, но не относится к "чистому экспорту" https://superuser.com/questions/294142/can-somebody-recommend-a-program-to-compare-differences-in-two-text- файлы-и-ре

1 ответ1

2

Вы можете просто использовать стандартный инструмент diff с некоторыми сценариями.

Для двух файлов примеров, простой diff выведет:

4c4,6
< 1004, Erin
---
> 1003, Dolores
> 1004, Edward

< Означает "удаленная строка", > "добавленная строка". Просто > чтобы получить все строки, которые находятся во втором файле, но не в первом:

$ diff a.csv b.csv |grep '>'|cut -c 3-
1003, Dolores
1004, Edward

(cut часть выбрасывает ведущую >). Вы можете поместить это в сценарий.

Примечание. Выше указано, что у вас установлены diff , grep & cut . Они стандартные в Linux и Mac OS X (я полагаю); для Windows вам понадобится Cygwin или аналог.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .