通过JQ和BASH / SHELL获取JSON文档的第三个元素
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了通过JQ和BASH / SHELL获取JSON文档的第三个元素相关的知识,希望对你有一定的参考价值。
我在AWS中有一些实例。我想通过特殊标签获取这些应用程序。
我的AWS CLI
命令,通过标签IAMOWNER
:
aws ec2 describe-instances --filters "Name=instance-state-name,Values=running" "Name=tag:Owner,Values=IAMOWNER" --query "Reservations[*].Instances[*].[InstanceId,PrivateIpAddress,Tags[?Key=='Name'].Value[]]" --region us-west-2
此命令的输出:
[
[
[
"i-d21eei21e912e0e91",
"192.168.1.203",
[
"mycentralapplication-DEV-10"
]
]
],
[
[
"i-ddaswed1e12415155",
"192.168.1.210",
[
"mycentralapplication-DEV-103"
]
]
],
[
[
"i-dass1241211agh354",
"192.168.1.202",
[
"myindexapplication-DEV-53"
]
]
],
[
[
"i-2143214251assaa11",
"192.168.1.211",
[
"myserviceapplication-DEV-52"
]
]
],
[
[
"i-d2112421521assas1",
"192.168.1.207",
[
"mycentralapplication-DEV-10"
]
]
],
[
[
"i-sadas11112424111a",
"192.168.1.196",
[
"myapplication-DEV-106"
]
]
]
]
问题。如何通过mycentralapplication
或jq
中的bash
库获取shell
例如的元素?例如,我只需要在输出中接收mycentralapplication
[
[
[
"i-d21eei21e912e0e91",
"192.168.1.203",
[
"mycentralapplication-DEV-10"
]
]
],
[
[
"i-ddaswed1e12415155",
"192.168.1.210",
[
"mycentralapplication-DEV-103"
]
]
],
[
[
"i-d2112421521assas1",
"192.168.1.207",
[
"mycentralapplication-DEV-10"
]
]
]
]
我该怎么做?
aws ec2 describe-instances --filters "Name=instance-state-name,Values=running" "Name=tag:Owner,Values=IAMOWNER" --query "Reservations[*].Instances[*].[InstanceId,PrivateIpAddress,Tags[?Key=='Name'].Value[]]" --region us-west-2 | jq -r "mycentralapplication"
在这种情况下,我返回错误。问题是,是否可以通过jq
解决此任务?还是我必须使用grep
等...?
答案
您可以使用此jq脚本:
aws ... | jq 'map(select(.[][][]?|contains("mycentralapplication")))'
这将选择所有包含字符串mycentralapplication
的嵌套数组元素>
以上是关于通过JQ和BASH / SHELL获取JSON文档的第三个元素的主要内容,如果未能解决你的问题,请参考以下文章
如何删除 jq 输出中的双引号以在 bash 中解析 json 文件?