Normally, in a pipeline, when you need to edit some phase of the data
stream, you use a standard tool such as sed, grep, or awk to alter,
filter, or otherwise manipulate the stream. One potential problem with
this approach is that the manipulations have to be very well thought out
in advance. Another is that the manipulations will probably need to be
applied uniformly. And third, the data must be very well understood in
advance. Not all situations and data easily conform to these
constraints.

Alternatively, when the changes needed for the data are more than
trivial, or perhaps you just don't feel like expending the mental energy
needed to work out all the expressions in advance, a typical approach
might be to run some process or pipeline, dump output to a file, edit
the file with vi, pico, or emacs, then push the data along to the next
phase by using the file as input to some additional process or pipeline.
The catch here - other than the sheer awkwardness of this process - is
that you have to remember to come back later and clean up all of those
little and not-so-little "temporary" files.

So, wouldn't you just like to be able to tap in an edit session at any
arbitrary point in the pipeline, do your magic on the data, then have it
automagically continue on its merry way? The vip program provides this
functionality, and operates syntactically just like any other filter.

Homepage:
http://www.cs.duke.edu/~des/vip.html
