Apply filter to STDERR in Linux
STDOUT ────────────────┐
├─────> terminal/file/whatever
STDERR ── [ filter ] ──┘
Method
If ./a.out
outputs as below
In STDERR:
stderr output
In STDOUT:
more regular
Then the following command will output as below.
# ./a.out 3>&1 1>&2 2>&3 3>&- | sed 's/e/E/g'
more regular
stdErr output
Explanation
First save stdout as &3 (&1 is duped into 3)
Next send stdout to stderr (&2 is duped into 1)
Send stderr to &3 (stdout) (&3 is duped into 2)
close &3 (&- is duped into 3)