gpt4 book ai didi

bash - 管道 stderr 和 stdout 分别

转载 作者:行者123 更新时间:2023-11-29 09:10:09 26 4
gpt4 key购买 nike

我想对特定命令的标准输出和标准错误执行不同的操作。有点像

cmd |1 stdout_1 | stdout_2 |2 stderr_1 | stderr_2

其中 stdout_x 是专门针对 stdout 的命令,而 stderr_x 是专门针对 stderr 的。如果来自每个 命令的 stderr 都通过管道传输到我的 stderr 命令中,那没关系,但如果 stderr 可以严格来自 cmd,那就更好了。我一直在寻找一些可能支持这一点的语法,但我似乎找不到任何东西。

最佳答案

您可以使用不同的文件描述符:

{ cmd 2>&3 | stdout_1; } 3>&1 1>&2 | stderr_1

示例:

{ { echo 'out'; echo >&2 'error'; } 2>&3 | awk '{print "stdout: " $0}'; } 3>&1 1>&2 |
awk '{print "stderr: " $0}'
stderr: error
stdout: out

或者使用进程替换:

cmd 2> >(stderr_1) > >(stdout_1)

示例:

{ echo 'out'; echo >&2 'error'; } 2> >(awk '{print "stderr: " $0}') \
> >(awk '{print "stdout: " $0}')
stderr: error
stdout: out

将 stdout 和 stderr 从您的 cmd分开

关于bash - 管道 stderr 和 stdout 分别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27673595/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com