You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何自定义重定向stderr?忽略前两个字符写入文件

解决方案:重定向stderr并过滤前两个字符

下面提供两种符合要求的单命令行实现方式,无需重新编译程序或编写额外辅助脚本:

方法1:兼容多数POSIX Shell的管道方案

./my-C-binary 2>&1 >/dev/null | sed 's/^..//' > error.log

逻辑解释:

  • 2>&1:将标准错误流(文件描述符2)重定向到标准输出流(文件描述符1)
  • >/dev/null:丢弃原程序的标准输出内容,确保管道中仅传递标准错误数据
  • sed 's/^..//':通过sed正则替换,移除每一行开头的两个字符
  • > error.log:将过滤后的最终内容写入目标日志文件

方法2:现代Shell(bash/zsh等)专属的进程替换方案

./my-C-binary 2> >(sed 's/^..//' > error.log)

逻辑解释:

  • 2> >(...):利用bash的进程替换特性,直接将标准错误流导向括号内的处理进程
  • 括号内的sed 's/^..//' > error.log会实时处理输入的错误输出,移除每行前两个字符后写入日志文件
  • 该方式无需额外处理标准输出,语法更简洁直观

验证说明

若原程序stderr输出为:

The quick brown fox jumps over the lazy dog.

经过上述命令处理后,error.log中会保存:

e quick brown fox jumps over the lazy dog.

内容的提问来源于stack exchange,提问作者FatArmpit

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 20:45:31