【问题标题】:jq remove element from array by valuejq 按值从数组中删除元素
【发布时间】:2018-01-03 13:42:16
【问题描述】:

我正在使用jq 并尝试根据其值从数组中删除一个元素,但无法弄清楚语法,它适用于 map 但不适用于 del:

输入 = [10,11,12]

echo $input | jq -r 'map(select(. == 10))' 返回[10]

echo $input | jq -r 'del(select(. == 10))' 按预期返回 [10,11,12] 而不是 [11,12]

有人能指出正确的方向吗?

【问题讨论】:

    标签: arrays json jq array-difference


    【解决方案1】:

    del 用于按路径删除,而不是按值:

     [10,11,12] | del(.[0]) #=> [11,12]
    

    实现您想要的一种方法是使用select:

     [10,11,12] | map(select(. != 10))
    

    另一个是使用数组减法:

     [10,11,12] - [10]
    

    但这可能太容易了。

    【讨论】:

    • 我明白了,我认为第二个选项是我的目标。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2021-12-29
    • 1970-01-01
    • 2017-04-11
    • 2017-03-10
    • 2012-04-19
    • 1970-01-01
    • 2019-05-09
    • 1970-01-01
    相关资源
    最近更新 更多