Подтвердить что ты не робот

Способ вывода различий между двумя файлами (предпочтительно с использованием командной строки)

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

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

Например:

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

apple
cool
dude
flan

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

apple
ball
cool
dude
elephant

Я хочу создать отчет, содержащий:

ball
elephant

Или, еще лучше, такой отчет:

+ball
+elephant
-flan

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

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

Спасибо заранее.

4b9b3361

Ответ 1

Вы, вероятно, хотите утилиту связи 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

Ответ 2

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

diff -u file1 file2 | sed -n '1,2d;/^[-+]/p'
+ball
-flan
+elephant