我正在使用 jq 尝试解析 AWS CLI 查询中的一些详细信息。
JSON 示例:
"Tags": [
{
"Key": "Name",
"Value": "db01"
},
{
"Key": "BackupResourceType",
"Value": "EC2"
},
{
"Key": "Role",
"Value": "db_edi01"
},
{
"Key": "OS",
"Value": "Ubuntu 18.04"
}
],
我遇到的问题是这些标签值的顺序不一致。有没有办法可以选择 key=OS 的值而不是选择特定的数组值?
[.InstanceId、.State.Name、.Tags[1].Value、.Tags[0].Value 等]
感谢您的帮助!
最佳答案
也许最好的方法是使用 from_entries
。例如。对于“操作系统”键:
.Tags | from_entries | .OS
更一般地说,但更详细地说,您可以选择:
.Tags | first( .[] | select(.Key == "OS") | .Value)
或者如果您担心指定的键不存在时的结果:
.Tags | first( .[] | select(.Key == "OS") // {} | .Value)
在没有看到完整示例的情况下,很难确切地说出最经济的表达方式是什么,但是结合您的示例,您可以使用以下内容:
[.InstanceId, .State.Name] +
[.Tags | from_entries | (.OS, .Role)]
关于json - jq json - 按键名称选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75560114/