You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JQ:按值筛选JSON子数组后按索引更新元素的实现方法

jq修改嵌套数组指定值实现方案

你原有筛选逻辑存在两个问题:

  • select(.[]=="brian")会匹配任意位置包含"brian"的子数组,没有严格校验索引0位置的值
  • 单独执行筛选会直接过滤掉非匹配项,无法保留完整原数组结构

直接使用jq的条件赋值逻辑即可一次性完成匹配、修改、返回完整数组的需求,不需要提前拆分筛选步骤:

完整命令

# 格式化输出
jq 'map(if .[0] == "brian" then .[2] = "cats" else . end)' 你的json文件路径

如果需要输出紧凑单行格式,加上-c参数即可,注意不要加-r参数(该参数会剥离JSON格式引号,破坏输出结构):

# 紧凑单行输出
jq -c 'map(if .[0] == "brian" then .[2] = "cats" else . end)' 你的json文件路径

执行结果

执行后输出的修改后JSON内容如下:

[
  [
    "dave",
    "likes",
    "rabbits"
  ],
  [
    "brian",
    "likes",
    "cats"
  ]
]

逻辑说明

  • map() 会遍历最外层数组的每一个子数组元素
  • .[0] == "brian" 严格判断当前子数组索引0位置的值是否为目标值
  • 匹配成功的子数组直接对索引2位置赋值"cats",非匹配子数组保持原值返回
  • 最终返回修改完成的完整外层数组,不会丢失其他非目标项

内容的提问来源于stack exchange,提问作者phil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 16:28:04