[mdlug] [HOWTO request] filter stderrr without altering stdout
Robert Meier
eaglecoach at wwnet.com
Wed Apr 11 07:43:42 EDT 2007
Carl
Thank you for your response.
>> How can I write a wrapper that filters stderr (fd 2) without altering
>> stdout (fd 1) using ksh?
> I'm not sure I understand what you're trying to do. It sounds
> like you want a script that will call a function. And I'm guessing
> that you don't want to see any errors from the function, but not
> filter errors from the script.
Actually I do want to see errors from the function, except for
a few known errors that have been handled by the script.
Detail:
# I have an interactive function, part of a large package.
# It reports to both stdout and stderr
# Unfortunately, it also reports a warning to stderr even though
# the warning has been successfully dealt with.
ksh> echo help | func 1>stdout 2>stderr
ksh> cat stdout
This is a nice function that does something interactively.
ksh> cat stderr
Warning: Unable to find my config file in /etc/func
Found the config file in /opt/etc/func
usage: func ...
# I don't wish to alter stdout at all, so the user can continue
# normal use.
# I do want to remove the warning successfully dealt with lest the
# the user ignore all errors and warnings.
# I do want the remaining warnings and errors to be seen, so the
# user can take corrective action.
ksh> echo help | func-wrapper 1>wrapped-stdout 2>wrapped-stderr
ksh> cat wrapped-stdout
This is a nice function that does something interactively.
ksh> cat wrapped-stderr
usage: func ...
# The necessary feature is that only a few well-defined warnings
# be removed from stderr, while all of stdout and the remainder of
# stderr are passed unaltered.
ksh> diff stdout wrapped-stdout
# no difference
ksh> diff stderr wrapped-stderr
< Warning: Unable to find my config file in /etc/func
< Found the config file in /opt/etc/func
ksh> cat func-wrapper
#!/bin/sh
????
func $*
????
For instance, is there a redirection usage that can carry interactive stdout
past grep, and apply grep to stderr only?
THE FOLLOWING DOES NOT WORK AS WRITTEN:
ksh> cat func-wrapper
#!/bin/sh
func $* 1>3 2>1 |
grep -v 'Warning: Unable to find my config file in /etc/func' |
grep -v 'Found the config file in /opt/etc/func' |
cat 1>2 3>1
THE ABOVE DOES NOT WORK AS WRITTEN
TIA,
--
Dr. Robert J. Meier
More information about the mdlug
mailing list