使用jq筛选指定device值对应的serialID时遇错误求助
解决jq筛选device=10对应serialID的错误问题
错误原因
你写的命令jq-win64 -c ".devices[].serialID | select(.devices.device == 10)"逻辑有误:
.devices[].serialID会直接遍历devices数组,取出每个对象的serialID字符串- 此时后续的
select(.devices.device == 10)是在字符串上下文里执行,字符串无法用.devices.device这种对象索引方式访问,所以触发报错。
正确命令
应该先筛选出device值为10的对象,再提取它的serialID,命令如下:
jq-win64 -c ".devices[] | select(.device == 10) | .serialID" C:\test.json
执行后会输出:
"qwer1234"
如果需要去掉输出的引号,可添加-r参数(raw输出模式):
jq-win64 -cr ".devices[] | select(.device == 10) | .serialID" C:\test.json
输出:
qwer1234
内容的提问来源于stack exchange,提问作者Kwangmin
相关产品推荐
相关产品推荐

