如何使用jq从JSON输出中提取指定key对应的value值
错误原因
之前执行的命令存在两个问题,导致无法正常运行:
- 命令末尾缺失闭合的单引号,语法不合法
- 目标字段
id的值是字符串类型,不是数组/可迭代对象,不需要追加[]遍历语法,追加后jq会尝试拆解字符串,触发运行错误
正确命令
直接执行以下命令即可输出目标id值:
jq -r '.id' /tmp/output.json
执行后输出结果完全匹配预期:
20436855-4635-49c0-8cc9-a389c569233b
用法说明
- jq原生支持直接读取本地文件,不需要额外通过
cat管道传递文件内容,上述写法更简洁执行效率更高 - 参数
-r的作用是输出原始字符串格式,去掉JSON值默认包裹的双引号,如果不加该参数,输出结果会是带双引号的"20436855-4635-49c0-8cc9-a389c569233b" - 仅当待处理的JSON是对象数组,需要批量提取所有元素的id字段时,才需要用到
[]遍历语法,对应写法为jq -r '.[].id' 目标文件路径
内容的提问来源于stack exchange,提问作者asp
相关产品推荐
相关产品推荐

