我有一个函数test1
可以在 和 上产生stdout
输出stderr
:
test1() {
echo "out 1"
sleep 0.1
echo "error 1" 1>&2
sleep 0.1
echo "out 2"
sleep 0.1
echo "error 2" 1>&2
sleep 0.1
}
然后我有两个别名格式 stdin
并将其发送至stdout
:
alias o='sed -E "s/^/O /"'
alias e='sed -E "s/^/E /"'
如何test1
通过o
和传输两个流e
并最终在stdout
和上得到格式化输出stderr
?我在 Alpine Linux 上使用 Bash,因此不能选择 GNU 实用程序。
我的推理如下,但我不知道如何在语法上执行它:
- 发送
err
至out
和out
至3
。 - 运行
in
、e
发送至err
和3
至out
。 - 跑过,匆匆
in
处理o
。 - 利润?
答案1
您可以使用 bash 来完成此操作过程替代:
请注意,您必须将其重定向回 stderr,以避免它被 stdout 管道拾取:
$ perl -E '说 {*STDOUT} “嗨”;说 {*STDERR} “再见”' \ >>(sed s/^/out:/) \ 2>>(sed s/^/错误:/>&2)