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

如何使用jq将命令输出中的'\n'替换为实际换行符?

用jq将JSON中的转义换行符\n转为实际换行

刚好碰到过类似的场景,用jq处理这种转义换行符其实很简单,给你两种实用的方法,对应不同的输入情况:

方法1:直接处理JSON对象里的stderr字段

如果你的输入已经是标准的JSON对象(比如从文件或命令输出拿到的就是合法JSON),只需要针对stderr字段做全局替换就行。注意:JSON里显示的\n实际上是以\\n的形式存储的(反斜杠被转义了),所以我们要匹配的是\\n,再替换成实际的换行符\n。

执行命令:

jq '.stderr |= gsub("\\n"; "\n")' your_input.json

简单解释:

  • .stderr |= ... 表示把stderr字段的原有值,替换成后面处理后的结果
  • gsub("\\n"; "\n") 全局查找所有的转义换行序列,替换成真正的换行符

方法2:处理转义后的JSON字符串

如果你的输入是一个被转义过的JSON字符串(比如某些命令输出的是带转义的文本,而非直接的JSON对象),那得先把它解析成JSON对象,再做替换:

echo '{"stderr": "Traceback (most recent call last):\\n File \"download.py\", line 157, in <module>\\n cli()\\n ..."}' | jq 'fromjson | .stderr |= gsub("\\n"; "\n")'

实际效果展示

用你给出的示例数据测试的话,执行命令后stderr的内容会变成正常换行的格式,输出大概是这样:

Traceback (most recent call last):
File "download.py", line 157, in
cli()
File "/var/task/click/core.py", line 722, in call
return self.main(*args, **kwargs)
...

这样输出的内容就能正常换行显示,方便你查看错误栈信息了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:14:09