如何使用jq按实际值删除JSON数组中的指定元素
jq按元素值删除数组项的方法
你可以使用以下两种不需要指定索引的方案实现按值删除"bear"元素:
方案1:过滤重赋值(推荐)
通过遍历数组筛选保留非目标值的元素,直接更新原数组:
jq '.animals |= map(select(. != "bear"))' animals.json
说明:|=为jq的更新赋值运算符,map()会遍历animals数组的每一项,select()会保留所有值不等于"bear"的元素,自动过滤掉目标项,即便数组里有多个重复的"bear"也会一次性全部删除。
方案2:直接删除匹配项
用del直接匹配并删除值为"bear"的元素:
jq 'del(.animals[] | select(. == "bear"))' animals.json
说明:先展开animals数组的所有元素,筛选出值等于"bear"的项后传入del删除,效果和方案1一致。
执行两种命令后都会得到如下结果:
{ "animals": [ "wolf", "cat", "lion", "snake", "tortise", "squirrel" ] }
内容的提问来源于stack exchange,提问作者dogman
相关产品推荐
相关产品推荐

