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

如何将特定JSON文件转换为关联进程PID的CSV文件

解决方案

你的问题在于当前命令把pid作为单独的数组输出,没有将其与每个连接条目关联起来,导致无法生成按进程ID对应所有连接的CSV。以下是正确的处理方式:

基础命令(输出带PID的连接数据)

cat sample.json | jq -r '.connections[] | [.process.pid, .src_ip, .dst_ip, .dst_port] | @csv'

命令说明:

  1. .connections[]:遍历JSON中的connections数组,逐个处理每个连接对象
  2. [.process.pid, .src_ip, .dst_ip, .dst_port]:为每个连接构造包含进程ID和所需连接字段的数组(请根据connections实际存在的字段调整,比如添加src_port、state等)
  3. @csv:将数组格式化为标准CSV格式;-r参数让jq输出原始字符串,避免额外的JSON转义引号

带表头的版本

如果需要添加CSV表头,可先输出表头数组,再拼接数据行:

cat sample.json | jq -r '["PID", "源IP", "目标IP", "目标端口"], (.connections[] | [.process.pid, .src_ip, .dst_ip, .dst_port]) | @csv'

示例效果

假设你的sample.json结构如下:

{
  "process": {
    "pid": 1234,
    "name": "nginx"
  },
  "connections": [
    {
      "src_ip": "192.168.1.10",
      "dst_ip": "8.8.8.8",
      "dst_port": 53,
      "state": "ESTABLISHED"
    },
    {
      "src_ip": "192.168.1.10",
      "dst_ip": "1.1.1.1",
      "dst_port": 443,
      "state": "TIME_WAIT"
    }
  ]
}

执行带表头的命令后,会输出:

"PID","源IP","目标IP","目标端口"
"1234","192.168.1.10","8.8.8.8","53"
"1234","192.168.1.10","1.1.1.1","443"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 00:50:44