Способ вывода различий между двумя файлами (желательно с помощью командной строки) - PullRequest
25 голосов
/ 16 декабря 2011

Я знаком с такими инструментами, как tkDiff и WinMerge, и знаю, как увидеть разницу между двумя файлами.

Я хочу создать отчет об элементах в одном файле, которыйотсутствуют в другом.

Например:

Файл1 содержит:

apple
cool
dude
flan

Файл2 содержит:

apple
ball
cool
dude
elephant

Я хочу произвестиотчет, который содержит:

ball
elephant

Или, что еще лучше, отчет, подобный этому:

+ball
+elephant
-flan

Кто-нибудь знает инструмент, который может это сделать?Желательно с параметрами командной строки.

Функция отчета в WinMerge не слишком далека от того, что я хотел бы, но нет опции командной строки, чтобы сделать это (насколько я знаю).

Заранее спасибо.

Ответы [ 3 ]

43 голосов
/ 21 декабря 2011

Это может работать для вас (GNU diff):

diff -u file1 file2 | sed -n '1,2d;/^[-+]/p'
+ball
-flan
+elephant
26 голосов
/ 16 декабря 2011

Возможно, вам нужна утилита связи Unix . версии Windows включены в gnuwin32

ИМЯ

   comm - compare two sorted files line by line

СИНТАКСИС

   comm [OPTION]... FILE1 FILE2

ОПИСАНИЕ

   Compare sorted files FILE1 and FILE2 line by line.

   With  no    options,  produce  three-column  output.  Column one contains
   lines unique to FILE1, column two contains lines unique to  FILE2,  and
   column three contains lines common to both files.

   -1     suppress lines unique to FILE1

   -2     suppress lines unique to FILE2

   -3     suppress lines that appear in both files
0 голосов
/ 08 июня 2013

Для сравнения данных с командной строкой вы можете использовать

COMP / a / l D: \ Folder1 \ data.txt D: \ Folder2 \ data.txt

Вот другие параметры для сравнения файлов и папок с командной строкой .

...