首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何过滤json数组的内容,但如何将父数组保留在jq中?

如何过滤json数组的内容,但如何将父数组保留在jq中?
EN

Unix & Linux用户
提问于 2020-01-29 20:35:55
回答 1查看 1.4K关注 0票数 2

我有一些JSON,如下所示:

代码语言:javascript
运行
复制
{
  "Vpcs": [
    {
      "VpcId": "vpc-1",
      "OwnerId": "abc"
    },
    {
      "VpcId": "vpc-2",
      "OwnerId": "def"
    }
  ]
}

我只想要使用OwnerId!=abc的元素,但我希望保持Vpcs父数组的完整。

如果我做了echo $JSON|jq -r '.Vpcs[]|select(.OwnerId!="abc"),我就会得到这个:

代码语言:javascript
运行
复制
{
  "VpcId": "vpc-2",
  "OwnerId": "def"
}

这与我想要的接近,但它没有父数组。因此,我想也许我应该将父数组放在select语句中,如下所示:

echo $JSON |jq -r '.|select(.Vpcs[].OwnerId!="abc")'

但这似乎并没有过滤我想要的数据:

代码语言:javascript
运行
复制
{
  "Vpcs": [
    {
      "VpcId": "vpc-1",
      "OwnerId": "abc"
    },
    {
      "VpcId": "vpc-2",
      "OwnerId": "def"
    }
  ]
}

我如何得到这样的结果:

代码语言:javascript
运行
复制
{
  "Vpcs": [
    {
      "VpcId": "vpc-2",
      "OwnerId": "def"
    }
  ]
}
EN

回答 1

Unix & Linux用户

发布于 2020-01-30 13:06:33

如果“重建”您的结构是一种选择,您可以这样做

代码语言:javascript
运行
复制
jq '.Vpcs[]|select(.OwnerId!="abc")|{Vpcs: [.]}'
票数 1
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/564796

复制
相关文章

相似问题

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