jq 按值从数组中删除元素

jq remove element from array by value

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

输入=[10,11,12]

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

echo $input | jq -r 'del(select(. == 10))' returns [10,11,12] 不像预期的那样 [11,12]

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

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

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

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

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

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

 [10,11,12] - [10]

但这可能太简单了。