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]
但这可能太简单了。
我正在使用 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]
但这可能太简单了。