The --ignore-tab-expansion (-E) option ignores the distinction between tabs and spaces on input. A tab is considered to be equivalent to the number of spaces to the next tab stop (see Preserving Tab Stop Alignment).
The --ignore-trailing-space (-Z) option ignores white space at line end.
The --ignore-space-change (-b) option is stronger than
-E and -Z combined.
It ignores white space at line end, and considers all other sequences of
one or more white space characters within a line to be equivalent. With this
option, diff
considers the following two lines to be equivalent,
where ‘$’ denotes the line end:
Here lyeth muche rychnesse in lytell space. -- John Heywood$ Here lyeth muche rychnesse in lytell space. -- John Heywood $
The --ignore-all-space (-w) option is stronger still.
It ignores differences even if one line has white space where
the other line has none. White space characters include
tab, vertical tab, form feed, carriage return, and space;
some locales may define additional characters to be white space.
With this option, diff
considers the
following two lines to be equivalent, where ‘$’ denotes the line
end and ‘^M’ denotes a carriage return:
Here lyeth muche rychnesse in lytell space.-- John Heywood$ He relyeth much erychnes seinly tells pace. --John Heywood ^M$
For many other programs newline is also a white space character, but
diff
is a line-oriented program and a newline character
always ends a line. Hence the -w or
--ignore-all-space option does not ignore newline-related
changes; it ignores only other white space changes.