jq json - 通过键名选择

问题描述 投票:0回答:1

我正在使用 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, etc]

感谢您的帮助!

json command-line-interface jq
1个回答
0
投票

也许最巧妙的方法是使用

from_entries
。例如。对于“OS”键:

.Tags | from_entries | .OS

更笼统但更冗长的是,您可以使用:

.Tags | first( .[] | select(.Key == "OS") | .Value)

或者如果您担心指定键不存在时的结果:

.Tags | first( .[] | select(.Key == "OS") // {} | .Value)
© www.soinside.com 2019 - 2024. All rights reserved.