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

Bash脚本中从同目录JSON提取指定服务关联条目至数组

处理超大无换行JSON:提取关联服务的主标题

我太懂你这种困境了——面对几千条无换行的JSON条目,用grep硬写正则根本搞不定结构化的关联匹配,要么误抓要么漏抓,头都大了对吧?别纠结文本工具了,用专门的JSON处理工具才是正确打开方式,这里给你两个靠谱的方案:

方案一:用jq(首选,命令行高效处理)

jq是专门为JSON设计的命令行工具,天生支持压缩(无换行)的JSON,不用先格式化就能直接处理,完美适配你的场景。

核心命令

假设你的JSON文件是data.json,要搜索服务标题为STitle5的条目,提取对应的主标题(优先title,其次id_name,最后enttitle):

jq -r '.[] | select(.services[]?.title == "STitle5") | .title // .id_name // .enttitle' data.json

命令拆解

  • .[]:遍历JSON里的所有顶级条目(因为你的数据是条目数组)
  • select(.services[]?.title == "STitle5"):筛选出services数组中存在任意一个服务title等于目标值的条目;?.是可选链式调用,避免services为null时报错
  • .title // .id_name // .enttitle:jq的默认值运算符,依次尝试取title、id_name、enttitle,哪个存在用哪个
  • -r:输出原始字符串(不带JSON引号),方便存入bash数组

存入bash数组

如果要把结果直接存入bash数组,直接把命令结果赋值即可:

target_titles=($(jq -r '.[] | select(.services[]?.title == "STitle5") | .title // .id_name // .enttitle' data.json))

之后可以用echo "${target_titles[@]}"查看数组内容,或者循环处理每个元素。

方案二:用Python脚本(适合无jq环境或复杂逻辑)

如果你的系统没法安装jq,或者需要更复杂的自定义逻辑,用Python的json模块处理也很稳妥:

编写提取脚本extract_service_titles.py

import json

# 目标服务标题
TARGET_SERVICE = "STitle5"
result_list = []

# 读取并解析JSON文件(支持无换行格式)
with open("data.json", "r", encoding="utf-8") as f:
    try:
        items = json.load(f)
        for item in items:
            # 遍历当前条目的所有服务
            for service in item.get("services", []):
                if service.get("title") == TARGET_SERVICE:
                    # 按优先级取主标题
                    main_title = item.get("title") or item.get("id_name") or item.get("enttitle")
                    if main_title:
                        result_list.append(main_title)
                    break  # 找到匹配服务就停止当前条目检查
    except json.JSONDecodeError as e:
        print(f"JSON解析错误:{e}")

# 输出结果(每行一个标题,方便bash捕获)
for title in result_list:
    print(title)

在bash中调用并存入数组

target_titles=($(python extract_service_titles.py))

为什么grep搞不定?

JSON是结构化数据,字段顺序不固定、嵌套层级多,grep这类文本工具只能做字符串匹配,没法理解结构关系。比如当主标题和服务标题之间隔着大量其他字段时,正则根本没法准确关联两者,很容易匹配到无关内容,尤其无换行的情况下,正则复杂度会爆炸,完全不适合这种场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 08:48:57