jq按值从数组中删除元素

时间:2018-01-03 13:42:16

标签: arrays json jq array-difference

我正在使用jq并试图从数组中删除一个基于它的值的元素无法弄清楚语法,它适用于map而不是del:

input = [10,11,12]

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

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

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

1 个答案:

答案 0 :(得分:2)

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

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

实现目标的一种方法是使用select

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

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

 [10,11,12] - [10]

但这可能太容易了。