JQ操作指南:如何按值而非索引删除JSON数组中的指定元素
JQ删除数组指定元素解决方案
你可以使用以下JQ命令实现删除instances数组中所有值为"three"或"five"的元素:
jq '(.vars.instances) |= map(select(. != "three" and . != "five"))' 你的输入文件.json
命令说明
(.vars.instances) |=:准确定位到JSON结构中需要修改的instances数组,|=为更新赋值操作符,处理后的结果会直接覆盖原数组位置的内容map(select(条件)):遍历数组所有元素,仅保留符合筛选条件的元素select(. != "three" and . != "five"):过滤逻辑,排除值为"three"或"five"的元素
输出示例
运行命令后输出结果如下:
{ "address": "localhost", "name": "local", "vars": { "instances": [ "one", "two", "four" ] } }
如果你需要直接修改原文件,可配合sponge工具(属于moreutils软件包,需提前安装)使用:
jq '(.vars.instances) |= map(select(. != "three" and . != "five"))' input.json | sponge input.json
内容的提问来源于stack exchange,提问作者Raj
相关产品推荐
相关产品推荐

