Diff, show modified line from right file only

I have file a and b and I would like to output lines of b that changed since it was cloned from a. Just the modified lines, no surrounding context, no diff offset marks.

How can I do that using shell scripting? (No Python/Perl/PHP/…)

Sed and awk are acceptable solutions.

For now, what I am doing is diff -y with –suppress-common-lines and sed using regex backreferences to just fetch the right part after the whitespace. There must be a better way?

Using perl (which is forbidden), I´d do something like this:

diff -y --suppress-common-lines -W $COLUMNS Eclipse_Preferences_Export_*.epf | perl -pe 's/.*t|t(.*)$/1/g'
Asked By: Robottinosino


With GNU diffutils package’s diff this will output only lines from file b which either were modified or newly inserted:

diff --unchanged-line-format= --old-line-format= --new-line-format='%L' a b
Answered By: manatwork

You have to add one more option :

grep -vf file1 file2
Answered By: Sri
awk 'FNR==NR{old[$0];next};!($0 in old)' old.txt new.txt
Answered By: 1kenthomas
Categories: Answers Tags: , , ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.