这是json:
{
"vendors": {
"vendor1": {
"vendor_version": "LS TT1706-POL",
"vendor_name": "toyota"
},
"vendor2": {
"vendor_version": "LSGS-2002-RC",
"vendor_name": "honda"
},
"vendor3": {
"vendor_version": "LS1903",
"vendor_name": "suzuki"
}
}
}
当我收到LSGS-2002-RC时,我基本上需要jq表达式来获取“ vendor2”。我试过使用选择,映射,变量及其所有组合。这是行不通的:
jq -r '.vendors|to_entries[]|.value|select(.vendor_version=="LSGS-2002-RC")'
基本上,我总是以键vendor1,vendor2等结束...
我有点难过。请注意,无法更改json结构或值。谢谢
您几乎拥有了它,但是正确的过滤器应该是使用上的select()
函数.value.vendor_version
并选择键名
jq -r '.vendors | to_entries[] | select(.value.vendor_version=="LSGS-2002-RC").key'
也不要将动态字符串传递给函数,使用占位符(如变量)
jq -r --arg vendor "LSGS-2002-RC" '.vendors | to_entries[] | select(.value.vendor_version == $vendor).key'
一种替代,少可读版本比select()
将是使用keys[]
.vendors | keys[] as $k | if .[$k].vendor_version == "LSGS-2002-RC" then $k else empty end
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句