如何使用jq提取多个独立JSON中第一个对象的version字段值
解决方案
问题原因
你拿到的输出不是标准JSON数组,是多个独立JSON对象组成的JSON流,因此直接使用数组相关的jq操作会报错。
可行方案
方案1:先合并为数组再提取(写法简单,适合数据量小的场景)
使用jq的-s(slurp)参数,将所有输入的JSON对象打包为一个数组,之后就可以用数组下标取第一个元素,再提取version字段:
# 替换为你实际的原命令,加-r参数可以去掉输出结果的双引号 <你的原输出命令> | jq -r -s '.[0].version'
方案2:直接取首个输入对象(性能更高,适合输出数据量大的场景)
使用-n参数配合inputs内置函数,直接读取第一个对象无需加载全部内容,内存占用更低:
<你的原输出命令> | jq -r -n 'first(inputs).version'
执行结果
两种命令执行后都会输出你需要的第一个对象的version值:
0.22.0
内容的提问来源于stack exchange,提问作者Gabriel
相关产品推荐
相关产品推荐

