使用 jq 打印数组的 json 对象的特定元素
Print specific element of json object of an array using jq
我正在描述一个 AWS 安全组并通过 jq
传递输出以获取入站规则的所有 CIDR。
到目前为止我已经达到:
▶ aws ec2 describe-security-groups --group-ids sg-123456789 | jq '.SecurityGroups[0].IpPermissions[0].IpRanges'
[
{
"CidrIp": "11.22.33.44/32",
"Description": "Something"
},
{
"CidrIp": "22.33.44.12/32",
"Description": "Something else"
},
{
"CidrIp": "22.11.33.55/32",
"Description": "Something different"
},
]
我知道我可以 grep
但是有没有办法只从这个数组的每个 json
元素中获取 CidrIp
?
当然可以,将管道更改为
jq -r '.SecurityGroups[0].IpPermissions[0].IpRanges[].CidrIp'
请注意,我还添加了 -r
标志,它使输出原始文本而不是 JSON。
jq '.SecurityGroups[0].IpPermissions[0].IpRanges | values[].CidrIp'
这似乎也有效。
我正在描述一个 AWS 安全组并通过 jq
传递输出以获取入站规则的所有 CIDR。
到目前为止我已经达到:
▶ aws ec2 describe-security-groups --group-ids sg-123456789 | jq '.SecurityGroups[0].IpPermissions[0].IpRanges'
[
{
"CidrIp": "11.22.33.44/32",
"Description": "Something"
},
{
"CidrIp": "22.33.44.12/32",
"Description": "Something else"
},
{
"CidrIp": "22.11.33.55/32",
"Description": "Something different"
},
]
我知道我可以 grep
但是有没有办法只从这个数组的每个 json
元素中获取 CidrIp
?
当然可以,将管道更改为
jq -r '.SecurityGroups[0].IpPermissions[0].IpRanges[].CidrIp'
请注意,我还添加了 -r
标志,它使输出原始文本而不是 JSON。
jq '.SecurityGroups[0].IpPermissions[0].IpRanges | values[].CidrIp'
这似乎也有效。