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

如何用jq提取JSON指定二级字段并以斜线拼接格式输出?

需求:提取JSON指定字段并格式化输出

给定如下JSON数据:

{"cpuUtilization": {"guest": 0,"irq": 0,"system": 1.7,"wait": 0.1,"idle": 86.6,"user": 4.2,"total": 13.4,"steal": 5,"nice": 2.4},"loadAverageMinute": {"one": 0.65,"five": 0.63,"fifteen": 0.5},"memory": {"writeback": 0,"hugePagesFree": 1,"hugePagesRsvd": 0,"hugePagesSurp": 0,"cached": 216624,"hugePagesSize": 2048,"free": 116764,"hugePagesTotal": 325,"inactive": 478084,"pageTables": 6508,"dirty": 620,"mapped": 57336,"active": 649440,"total": 2014212,"slab": 48984,"buffers": 67976}}

需要仅提取其中的cpuUtilization和memory部分,并按如下格式输出:

cpuUtilization\guest = 0
cpuUtilization\irq = 0
...
cpuUtilization\nice = 2.4
memory\writeback = 0
memory\hugePagesFree = 1
...

尝试用map选项实现该需求,寻求技术帮助。

解决方案

可以使用jq工具实现,通过遍历指定对象的键值对,拼接成目标格式字符串。执行以下命令即可:

jq -r '
  (.cpuUtilization | to_entries[] | "cpuUtilization\\\(.key) = \(.value)"),
  (.memory | to_entries[] | "memory\\\(.key) = \(.value)")
' input.json

命令说明:

  • to_entries:将对象转换为包含key和value的数组元素,便于遍历子字段。
  • 字符串拼接部分:手动拼接父对象名、转义后的反斜杠、子字段名和对应值,确保输出格式符合要求。
  • -r参数:让jq输出原始字符串,而非JSON格式的带引号字符串。

如果输入是从标准输入传入,替换为管道输入即可:

echo '{"cpuUtilization": {...}}' | jq -r '...'

内容的提问来源于stack exchange,提问作者P.Lonnie

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 11:10:42