Json 子级jq阵列滤波

Json 子级jq阵列滤波,json,jq,Json,Jq,我看到的所有演示/示例都在第一级进行过滤,但我想在第二级使用jq进行阵列过滤: { "TheArray": [ { "F1": "V11", "F2": "V12", "F3": "V13" }, { "F1": "V21", "F2": "V22", "F3": "V33" } ] } 我想使用“F1”==“V11”进行筛选,并获得: { "TheArr

我看到的所有演示/示例都在第一级进行过滤,但我想在第二级使用jq进行阵列过滤:

{
  "TheArray": [
    {
      "F1": "V11",
      "F2": "V12",
      "F3": "V13"
    },      
    {       
      "F1": "V21",
      "F2": "V22",
      "F3": "V33"
    }  ]
}
我想使用
“F1”==“V11”
进行筛选,并获得:

{
  "TheArray": [
    {
      "F1": "V11",
      "F2": "V12",
      "F3": "V13"
    }  ]
}

使用jq
jq
,这可能吗

您可以使用此jq筛选器:

jq '.TheArray |= map(select(.F1=="V11"))' file

select
命令选择正确的元素,并且
map
正在基于所选元素构建数组。

如果您想要一个简单地“编辑”原始文档、保留顶级对象可能具有的任何其他键的解决方案,则以下选项将非常合适:

.TheArray |= map(select(.F1=="V11"))
变化 另一个:

del(.TheArray[] | select(.F1!="V11"))
如果您的jq版本比1.5版更新:

.TheArray[] |= select(.F1=="V11")
.TheArray[] |= select(.F1=="V11")