在bash中,在将STDERR与STDOUT统一之前,有没有办法通过一个过滤器对其进行管道传输?就是说,我想要
STDOUT ────────────────┐
├─────> terminal/file/whatever
STDERR ── [ filter ] ──┘
而不是
STDOUT ────┐
├────[ filter ]───> terminal/file/whatever
STDERR ────┘
在bash中,在将STDERR与STDOUT统一之前,有没有办法通过一个过滤器对其进行管道传输?就是说,我想要
STDOUT ────────────────┐
├─────> terminal/file/whatever
STDERR ── [ filter ] ──┘
而不是
STDOUT ────┐
├────[ filter ]───> terminal/file/whatever
STDERR ────┘
下面是一个模仿how to swap file descriptors in bash的例子.a.out的输出如下,不带'STDXXX:'前缀.
STDERR: stderr output
STDOUT: more regular
./a.out 3>&1 1>&2 2>&3 3>&- | sed 's/e/E/g'
more regular
stdErr output
引用上述链接:
- 首先将stdout另存为&;3(&;1被复制为3)
- 下一步将stdout发送到stderr(&;2被复制为1)
- 将stderr发送到&;3(stdout)(&;3被复制为2)
- 关闭&;3(将&;-复制为3)