我看到的所有演示/示例都在 first 级别进行过滤,但是我想在jem进行第二级过滤:
{
"TheArray": [
{
"F1": "V11",
"F2": "V12",
"F3": "V13"
},
{
"F1": "V21",
"F2": "V22",
"F3": "V33"
} ]
}
我想用"F1" == "V11"
进行过滤,并得到:
{
"TheArray": [
{
"F1": "V11",
"F2": "V12",
"F3": "V13"
} ]
}
jq
有可能吗?
答案 0 :(得分:2)
您可以使用以下jq过滤器:
jq '.TheArray |= map(select(.F1=="V11"))' file
select
命令选择正确的元素,map
正在基于所选元素构建数组。
答案 1 :(得分:1)
如果您想要一个可以简单地“编辑”原始文档,并保留顶级对象可能具有的其他键的解决方案,则下面的方法比较合适:
.TheArray |= map(select(.F1=="V11"))
with_entries( .value |= map(select(.F1 == "V11")))
另一个:
del(.TheArray[] | select(.F1!="V11"))
如果您使用的jq版本比1.5版新:
.TheArray[] |= select(.F1=="V11")