Shell – Diff, show modified line from right file only

awkdiff()sedshell-script

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'

Best Answer

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
Related Question