JQ:从数组中删除元素 [英] jq: delete element from array

查看:18
本文介绍了JQ:从数组中删除元素的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有此JSON文件,想要从数组中删除一个元素:

{
"address": "localhost",
"name": "local",
"vars": {
    "instances": [
        "one",
        "two"
    ]
  }
}

我正在使用此命令:

jq 'del(.vars.instances[] | select(index("one")))' data.json

输出为:

{
"address": "localhost",
"name": "local",
"vars": {
    "instances": [
        "two"
    ]
  }
}

所以它可以像预期的那样工作,但只能使用JQ v1.6。对于JQ v1.5,我收到以下错误:

jq: error (at data.json:20): Invalid path expression near attempt to access element 0 of [0]

那么我做错了什么?这是一个错误还是v1.5的一个特性?是否有任何解决方法可以在v1.5中获得相同的结果?

提前谢谢

文斯

推荐答案

在两个版本上都可以使用一个笔记本电脑,

.vars.instances |= map(select(index("one")|not))

或者如果您想继续使用del(),则将字符串"one"的索引传递给如下函数,其中index("one")获取索引0,然后传递给DELETE,作为del(.[0])表示删除第零个索引处的元素。

.vars.instances |= del(.[index("one")])

这篇关于JQ:从数组中删除元素的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆