在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

引用上述链接:

  1. 首先将stdout另存为&;3(&;1被复制为3)
  2. 下一步将stdout发送到stderr(&;2被复制为1)
  3. 将stderr发送到&;3(stdout)(&;3被复制为2)
  4. 关闭&;3(将&;-复制为3)

Linux相关问答推荐

Aarch64在Linux上是否有红色区域,如果有,是16个字节还是128个字节?

在CefExecuteProcess;之前创建新线程会导致CEF应用程序崩溃并显示SIGTRAP

使用awk命令将以:分隔的两个文件合并的方法

awk 使用动态列号

如何添加Linux格式的时间输出

有必要注意非错误提示吗?好像没有找到包裹‘***’?

当未在日志(log)中输入确切的时间戳时如何过滤日期范围内的值

`std::cout` 是如何实现的?

如何/在哪里可以找到要修复的 Linux 内核错误?

我在哪里放置第三方库来设置 C++ Linux 开发环境?

在没有root访问权限的情况下安装zsh?

如何获取WiFi网络接口的MAC地址?

用于 Linux 的 Less 编译器

为 django 项目安装 memcached

为什么`du`的输出通常与`du -b`如此不同

是否有一个 linux 命令来确定与给定进程 ID 关联的窗口 ID?

使用 C++ 和 Linux 的高分辨率计时器?

Linux SCHED_OTHER、SCHED_FIFO 和 SCHED_RR - 区别

svn over HTTP 代理

为嵌入式 Linux 设备实施更新/升级系统