使用jq从数组中按值删除元素

6
我正在使用 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] 有人能指点我吗?
1个回答

12

del 旨在通过路径删除,而非通过值删除:

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

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

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

另一种方法是使用数组减法:

 [10,11,12] - [10]

但这可能太简单了。


我明白了,我认为第二个选项是我想要的。谢谢。 - twiglet

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接