По ходу данной попытки, а именно:
.bar [] |выберите (.v == 2 | не)
, вы бы использовали оператор |=
, например:
.bar |= map(select(.v ==2 | not))
Или просто:
.bar |= map(select(.v != 2))
Если вы хотите удалить только первое совпадение, вы можете написать:
.bar |= (index({v:2}) as $i| .[:$i] + .[$i+1:])
или более надежно:
.bar |= (index({v:2}) as $i
| if $i then .[:$i] + .[$i+1:] else . end)
или, если вы предпочитаете:
.bar |= ( ([.[].v]|index(2)) as $i
| if $i then del(.[$i]) else . end)