我正在使用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]
有人能指出我正确的方向吗?
答案 0 :(得分:2)
del
用于按路径删除,而不是按值删除:
[10,11,12] | del(.[0]) #=> [11,12]
实现目标的一种方法是使用select
:
[10,11,12] | map(select(. != 10))
另一种方法是使用数组减法:
[10,11,12] - [10]
但这可能太容易了。