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

如何用jq等Ubuntu默认工具将JSON数组按单行单元素输出到stdout

JSON数组逐元素单行输出实现方案

你需要的将JSON数组每个元素单独输出为单行JSON(JSON Lines格式,适配Grafana日志采集)的需求,可通过以下两种方式实现:


方案1:使用jq实现(最简洁,推荐)

jq是专业的命令行JSON处理工具,自带专门的紧凑输出参数,可直接实现需求:

  1. 若未安装jq,执行命令快速安装:
sudo apt update && sudo apt install -y jq
  1. 处理JSON文件/输入流的核心命令:
# 读取本地JSON文件处理
jq -c '.[]' your_vuln_list.json

# 若JSON来自其他命令的输出,直接管道传递即可
# 例:漏洞扫描结果输出时可直接管道拼接处理

参数说明:

  • -c:启用紧凑输出模式,取消默认的缩进美化,每个JSON对象单独压缩为一行
  • .[]:遍历输入JSON数组的每一个元素
    执行后输出效果和你给出的期望格式完全一致,Grafana可直接识别解析。

方案2:使用Ubuntu默认自带工具(无需额外安装)

如果环境限制不能安装额外软件,可直接使用Ubuntu默认预装的Python3实现,无需依赖第三方包:

# 读取本地JSON文件
python3 -c "import sys, json; data = json.load(sys.stdin); [print(json.dumps(item, ensure_ascii=False)) for item in data]" < your_vuln_list.json

# 管道传递输入的用法和jq一致

该命令逻辑为读取标准输入的JSON数组,遍历每个元素后序列化为无格式缩进的JSON字符串逐行打印,输出效果和jq方案完全一致。


注意:请勿使用sed、awk等纯文本切割工具处理JSON,当JSON字段中存在转义引号、嵌套结构、换行符等特殊内容时,纯文本处理很容易破坏JSON格式,导致Grafana解析失败,使用专用JSON解析工具稳定性更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 09:12:29