首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JQ选择与字符串不匹配的项目

JQ选择与字符串不匹配的项目
EN

Stack Overflow用户
提问于 2017-01-04 05:10:38
回答 1查看 2.5K关注 0票数 2

我有一组通过AWS ec describe-instances解析的aws实例。我希望修剪掉IP不是以'10.10‘开头的所有记录。

代码语言:javascript
复制
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问题的答案-我会接受通过查询开关使用JMESPath的答案-但查询开关会产生相同的结果。

EN

回答 1

Stack Overflow用户

发布于 2017-01-04 05:46:05

Jeff Marcado在评论中的回答将被接受,如果他把它写成一个完整的答案。同时,由于我在尝试让JQ来做这件事时遇到了困难,我尝试了AWS的--query语法来实现这一点。

它可能会更好一些,因为它只捕获以10.10开头的对象,而上面的jq将捕获任何包含10.10的对象,因此类似于10.100。或者110.100,等等。会打通的。这是假设在jq中没有类似于"starts_with“的运算符。可能是有的。无论如何,我之所以把它放在这里,是因为它对我的最终目标起到了作用,而且在某个时候可能会对其他人有所帮助。

代码语言:javascript
复制
aws ec2 describe-instances \
    --no-paginate --filter "Name=instance-state-name,Values=running" \
    --query 'Reservations[].Instances[?starts_with(PrivateIpAddress, `10.10.`) == `false`]' |
  jq '.[] | .[] | {PrivateIpAddress, PublicIpAddress, PublicDnsName}'
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41452437

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档