(wdiff.info)wdiff Examples


Prev: wdiff invocation Up: wdiff
Enter node , (file) or (file)node

2.2 Actual examples of ‘wdiff’ usage
====================================

This section presents a few examples of usage, most of them have been
contributed by ‘wdiff’ users.

   • Change bars example.

        • This example comes from a discussion with Joe Wells
          <jbw@cs.bu.edu>.

          The following command produces a copy of NEW_FILE, shifted
          right one space to accommodate change bars since the last
          revision, ignoring those changes coming only from paragraph
          refilling.  Any line with new or changed text will get a ‘|’
          in column 1.  However, deleted text is not shown nor marked.

               wdiff -1n OLD_FILE NEW_FILE |
                 sed -e 's/^/  /;/{+/s/^ /|/;s/{+//g;s/+}//g'

          Here is how it works.  Word differences are found, paying
          attention only to additions, as requested by option ‘-1’.  For
          bigger changes which span line boundaries, the insert bracket
          strings are repeated on each output line, as requested by
          option ‘-n’.  This output is then reformatted with a ‘sed’
          script which shifts the text right two columns, turns the
          initial space into a bar only if there is some new text on
          that line, then removes all insert bracket strings.

   • LaTeX example.

        • 
          This example has been provided by Steve Fisk
          <fisk@polar.bowdoin.edu>.

          The following uses LaTeX to put deleted text in boxes, and new
          text in double boxes:

               wdiff -w "\fbox{" -x "}" -y "\fbox{\fbox{" -z "}}" ...

          works nicely.

   • ‘troff’ example.

        • This example comes from Paul Fox <pgf@cayman.com>.

          Using ‘wdiff’, with some ‘troff’-specific delimiters gives
          _much_ better output.  The delimiters I used:

               wdiff -w'\s-5' -x'\s0' -y'\fB' -z'\fP' ...

          This makes the pointsize of deletions 5 points smaller than
          normal, and emboldens insertions.  Fantastic!

          I experimented with:

               wdiff -w'\fI' -x'\fP' -y'\fB' -z'\fP'

          since that’s more like the defaults you use for terminals or
          printers, but since I actually use italics for emphasis in my
          documents, I thought the point size thing was clearer.

          I tried it on code, and it works surprisingly well there,
          too...

        • Marty Leisner <leisner@eso.mc.xerox.com> says:

          In the previous example, you had smaller text being taken out
          and bold face inserted.  I had smaller text being taken out
          and larger text being inserted, I’m using bold face for other
          things, so this is more clear.

               wdiff -w '\s-3' -x'\s0' -y'\s+3' -z'\s0'

   • Colored output example.

        • This example comes from Martin von Gagern
          <Martin.vGagern@gmx.net>.

          If you like colored output, and your terminal supports ANSI
          escape sequences, you can use this invocation:

               wdiff -n \
                 -w $'\033[30;41m' -x $'\033[0m' \
                 -y $'\033[30;42m' -z $'\033[0m' \
                 ... | less -R

          This will print deleted text black on red, and inserted text
          black on green, assuming that your normal terminal colors are
          white on black.  Of course you can choose different colors if
          you prefer.

          The ‘$'...'’ notation is supported by GNU bash, and maybe
          other shells as well.  If your shell doesn’t support it, you
          might need some more tricks to generate these escape sequences
          as command line arguments.

   On a related note, GNU Emacs users might notice that the interactive
function ‘compare-windows’ ignores changes in whitespace, if it is given
a numeric argument.  If the variable ‘compare-ignore-case’ is non-‘nil’,
it ignores differences in case as well.  So, in a way, this offers a
kind of incremental version of ‘wdiff’.


automatically generated by info2www version 1.2.2.9