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

终端下如何从大型JSON文件中提取指定关键字及其对应数据

终端下如何从大型JSON文件中提取指定关键字及其对应数据

碰到超大JSON文件确实头疼,编辑器直接卡爆太闹心了!你之前用grep没得到想要的结果很正常——grep本质是处理纯文本,对JSON这种结构化数据完全不“理解”,加上大文件用cat全读进内存,直接刷屏也在所难免。

给你推荐几个靠谱的解决办法,都是终端里就能搞定的:

首选:用jq(JSON处理神器)

jq是专门为终端处理JSON设计的工具,流式处理大文件完全不卡,而且能精准定位结构化数据。

  1. 先确保你装了jq:

    • Debian/Ubuntu系:sudo apt install jq
    • macOS:brew install jq
    • 其他系统可以通过对应包管理器安装,一般都有支持。
  2. 提取所有OutputResults字段的值:
    如果不管OutputResults在JSON的哪个层级,只要出现就提取它的值,用这个命令:

    jq '..|.OutputResults? // empty' thefile.json
    

    简单解释下:

    • ..:递归遍历JSON的所有节点
    • .OutputResults?:尝试获取每个节点下的OutputResults字段,?表示没有该字段时不报错
    • // empty:没找到这个字段就跳过,避免输出冗余内容
  3. 如果想连字段名一起输出(保留"OutputResults": {...}格式):

    jq '..|objects|select(has("OutputResults"))|{OutputResults: .OutputResults}' thefile.json
    

    这样输出的每个结果都是完整的键值对结构,更直观。

备选:用Python脚本(无需额外工具)

如果你的环境没法装jq,Python几乎是系统自带的,写个小脚本就能搞定:

普通版(适合内存能装下整个文件)

import json

def find_output_results(obj):
    # 递归遍历所有节点找OutputResults
    if isinstance(obj, dict):
        if "OutputResults" in obj:
            yield obj["OutputResults"]
        for value in obj.values():
            yield from find_output_results(value)
    elif isinstance(obj, list):
        for item in obj:
            yield from find_output_results(item)

with open("thefile.json", "r") as f:
    data = json.load(f)

for result in find_output_results(data):
    # 格式化输出,看起来更清晰
    print(json.dumps(result, indent=2))

把这段代码存成extract_json.py,然后运行:

python extract_json.py

流式版(应对超大内存的极端情况)

如果文件大到内存都装不下,用ijson库流式读取(需要先安装:pip install ijson):

import ijson
import json

with open("thefile.json", "r") as f:
    # 流式遍历所有OutputResults字段
    for result in ijson.items(f, "..OutputResults"):
        print(json.dumps(result, indent=2))

这个版本不会把整个文件读进内存,再多的内容也能平稳处理。

为啥之前的grep不行?

你用grep -A 4的时候,JSON的结构可能不是固定的4行,而且大文件用cat会一次性把整个文件输出,自然会刷屏。grep没法识别JSON的层级关系,所以抓不到精准的对应数据,还是用专门的JSON工具更靠谱。

备注:内容来源于stack exchange,提问作者KansaiRobot

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.22 10:15:30