Список строк всего из одного файла в РАЗНОСТИ

Я хотел бы получить (GNU) РАЗНОСТЬ к распечатке только строки, которые отличаются в одном файле. Так данный

    ==> diffa.txt <==
    line1
    line2 - in a only
    line3
    line4 changed
    line5

    ==> diffb.txt <==
    line1
    line3
    line4 changed in b
    line5
    line6 in b only

я хотел бы diff --someoption diffa.txt diffb.txt произвести

    line2 - in a only

    line4 changed

Следующие взгляды, как будто это должно быть полезно, но это немного загадочно:

   --GTYPE-group-format=GFMT
          Similar, but format GTYPE input groups with GFMT.

   --line-format=LFMT
          Similar, but format all input lines with LFMT.

   --LTYPE-line-format=LFMT
          Similar, but format LTYPE input lines with LFMT.

   LTYPE is `old', `new', or `unchanged'.
          GTYPE is LTYPE or `changed'.

          GFMT may contain:

   %<     lines from FILE1

   %>     lines from FILE2
34
задан 27.04.2010, 16:19

1 ответ

Не уверен diff один может сделать это, но можно всегда использовать питание других утилит GNU помочь Вам.

diff -u diffa.txt diffb.txt | grep '^-[^-]' | sed 's/^-//'

Это делает разность, затем выбирает только строки, который начинается с '-' - они изменяются и имеют значения из файла diffa.txt, затем sed просто удалите те '-' знаки.

Править: После немногих экспериментов с diff, похож ниже команды, производит то, что Вы хотите:

diff --changed-group-format='%<' --unchanged-group-format='' diffa.txt diffb.txt
42
ответ дан 07.12.2019, 09:03

Теги

Похожие вопросы