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

Linux下使用jq按条件筛选JSON中docker-image类型的path值

提取packages.json中指定类型依赖路径的实现方案

现有文件与需求说明

存储Docker镜像等依赖信息的packages.json文件结构示例如下:

{
  "dependencies": [
    {
      "name": "powershell-core",
      "type": "zip",
      "path": "Dependencies",
      "filename": "PowerShell-Core-6.2.3-win-x64.msi"
    },
    {
      "name": "redis",
      "type": "docker-image",
      "path": "redis:6.0.10-alpine3.12",
      "filename": ""
    },
    {
      "name": "keycloak",
      "type": "docker-image",
      "path": "jboss/keycloak:12.0.1",
      "filename": ""
    }
  ]
}

注:原示例内容末尾存在多余尾逗号,不符合标准JSON规范,实际使用时建议删除避免解析报错

需求为:在Linux环境下,提取dependencies节点下所有type字段值为docker-image的条目的path值,结果保存到文件。之前通过手动指定数组下标的jq '.dependencies[2].path' packages.json命令只能获取单条固定位置的结果,无法适配批量筛选、条目顺序调整的场景。

具体实现命令

直接使用jq的条件筛选语法即可完成需求,无需编写额外脚本:

  1. 直接在终端输出筛选结果的命令:
    jq -r '.dependencies[] | select(.type == "docker-image") | .path' packages.json
    
  2. 将结果保存到指定文件(例如保存为docker_image_list.txt),只需要追加shell重定向符即可:
    jq -r '.dependencies[] | select(.type == "docker-image") | .path' packages.json > docker_image_list.txt
    

命令参数说明

  • -r:raw输出模式,提取的字符串不会额外包裹JSON格式的双引号,直接输出纯文本内容
  • .dependencies[]:遍历dependencies数组下的所有元素,不需要手动指定数组下标,后续新增、调整依赖条目顺序不需要修改命令
  • select(.type == "docker-image"):筛选逻辑,仅保留type字段值匹配docker-image的条目,自动跳过字段不匹配、字段缺失的条目,适配半结构化、字段不统一的JSON内容
  • .path:对筛选出的条目,提取其path字段的值

执行结果

命令执行后,输出/保存的内容为:

redis:6.0.10-alpine3.12
jboss/keycloak:12.0.1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 11:48:16