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

如何在CMD中用JQ合并Instana EUM JSON并生成合法JSON数组

在Windows CMD中用jq合并JSON文件并生成单个合法JSON数组

问题背景

从Instana导出的每日网站访问统计JSON文件,每个文件结构包含items数组,需要合并所有文件并提取以下字段:

  • url:对应原数据的name字段
  • date:对应uniqueSessions.distinct_count数组的第一个值
  • load:对应uniqueSessions.distinct_count数组的第二个值

之前使用命令type *.json | jq ".items[] | {url: .name, date: .metrics[][0][0], load: .metrics[][0][1]}"会生成多个独立JSON对象,无法得到单个合法数组,核心是Windows CMD的引号解析和jq的输入处理逻辑问题。

解决方案

使用以下CMD命令即可生成单个完整的JSON数组:

type *.json | jq -n "[inputs.items[] | {url: .name, date: .metrics[\"uniqueSessions.distinct_count\"][0][0], load: .metrics[\"uniqueSessions.distinct_count\"][0][1]}]"

命令说明

  1. -n参数:让jq不自动读取标准输入的初始内容,改用inputs遍历所有输入的JSON对象(对应每个type *.json输出的文件内容)
  2. [ ... ]:将所有处理后的对象包裹成一个数组,确保最终输出是单个合法JSON数组
  3. 引号转义:在CMD中,双引号需要用\"转义,因此metrics中的键uniqueSessions.distinct_count要写成\"uniqueSessions.distinct_count\",避免CMD解析引号时出错
  4. 字段提取逻辑:遍历每个输入JSON的items数组元素,提取指定字段并构造新对象

示例输出

针对提供的示例JSON文件,运行命令后会得到:

[
  {
    "url": "page1.htm",
    "date": 1675292400000,
    "load": 4.0
  },
  {
    "url": "page2.htm",
    "date": 1675292400000,
    "load": 1.0
  },
  {
    "url": "page3.htm",
    "date": 1675292400000,
    "load": 7.0
  }
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 12:36:03