我有以下数据:
{
"storageSummary": "testvalue",
"audit1": {
"auditScore": 1,
"suspensionScore": 1,
"password" : "value1",
"onlineScore": 0.99743587,
"satelliteName": "us2.storj.io:7777"
},
"audit2": {
"auditScore": 1,
"suspensionScore": 1,
"password" : "valueX",
"onlineScore": 0.9992917,
"satelliteName": "saltlake.tardigrade.io:7777"
},
"audit3": {
"auditScore": 1,
"suspensionScore": 1,
"password" : "value72",
"onlineScore": 0.99930555,
"satelliteName": "ap1.storj.io:7777"
}
}
在bash中,我需要遍历这些数据,以更新所有auditX
对象的password
。我尝试了以下方法:
jq ' .[] |select(has("auditScore")) '
但是我在第一个项目上得到一个错误:
jq: error (at <stdin>:23): Cannot check whether string has a string key
exit status 5
当我删除数据中的第一个项"storageSummary": "testvalue"
时,我可以循环遍历对象(但我的数据中有一些项没有auditscore
键)。
最终目标是在bash for
循环中运行此结果以更新密码(并执行更具体的任务)。
你能告诉我正确的方向吗?
2条答案
按热度按时间66bbxpm51#
您可以使用
select(type == "object")
过滤对象,或使用其等效快捷方式objects
:这将返回具有名为
auditScore
的字段的对象流要基于该流设置(另一个)字段,请将LHS Package 到括号中以保留上下文:
hfsqlsce2#
关于Ruby:
图纸:
如果要更改每个的密码:
图纸: