如何使用jq解析时间维度动态变化的JSON并提取CpuUsage数据
jq解析动态时间戳键JSON提取CPU使用率方案
核心逻辑
你的JSON结构里MonitorHistory字段存储的是转义后的JSON字符串,且内层对象的键为动态时间戳,不需要匹配具体键名,直接提取所有值的CpuUsage字段即可。
1. 提取所有CpuUsage值(空格分隔格式)
运行命令:
jq -r '.MonitorHistory | fromjson | map(.CpuUsage) | join(" ")' 你的JSON文件路径
参数说明:
.MonitorHistory:提取外层MonitorHistory字段的字符串内容fromjson:将转义的JSON字符串解析为标准JSON对象map(.CpuUsage):遍历JSON对象的所有值(忽略动态时间戳键),逐个提取CpuUsage字段生成数组join(" "):将数组合并为空格分隔的字符串,输出格式符合你要求的0.45 0.73 0.6...
2. 扩展:直接查询最高CPU使用率
如果需要直接得到最高值,可使用命令:
jq -r '.MonitorHistory | fromjson | map(.CpuUsage | tonumber) | max' 你的JSON文件路径
额外增加了tonumber将字符串格式的CPU数值转为数字类型,再用max函数取最大值,你提供的示例运行后会输出1.72。
效果验证
针对你给出的示例JSON,运行第一个提取全量值的命令,输出结果为:
0.45 0.57 0.73 0.6 0.45 0.57 0.6 0.65 0.72 0.57 0.87 0.67 0.78 0.72 0.73 0.92 1.0 1.23 0.93 0.98 0.87 0.95 1.18 1.08 1.15 1.37 1.72 1.6 1.47
完全匹配需求。
内容的提问来源于stack exchange,提问作者Lunartist
相关产品推荐
相关产品推荐

