Я хотел бы получить (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
Не уверен 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