【发布时间】:2017-01-03 21:10:37
【问题描述】:
我有一组通过 aws ec describe-instances 解析的 AWS 实例。我正在寻找删除所有 IP 不以“10.10”开头的记录。
aws ec2 describe-instances --no-paginate --filter "Name=instance-state-name,Values=running" --query 'Reservations[].Instances[].{Private:PrivateIpAddress,PublicDNS:PublicDnsName,PublicIP:PublicIpAddress}' | jq '.[] | select( .Private | contains("10.10"))'
这与我想要的完全相反。我应该能够以某种方式否定包含似乎是合乎逻辑的 - 但我无法从文档中收集它,也无法通过实验。我的 jq 熟练度中等,所以也许我在这里使用了错误的运算符或函数。
虽然我希望回答这个特定的 jq 问题 - 我会接受一个通过 --query 开关使用 JMESPath 的答案产生相同的结果。
【问题讨论】:
-
只需在选择谓词的末尾添加一个
not。 -
抱歉,我不太确定语法应该是什么。你能详细说明一下吗?我尝试在几个不同的地方添加“not”,但我不断收到 jq 编译错误。
-
select(.Private | contains("10.10") | not)您可能也应该使用startswith/1,因为您特别不希望在字符串的开头使用它。 -
D'OH!我从来没有想过 not 应该出现在 contains 之后.... 做到了。谢谢!。如果您想将您的评论表述为答案,我会接受。
标签: amazon-ec2 aws-cli jq