首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将txt转换为json?

如何将txt转换为json?
EN

Stack Overflow用户
提问于 2022-01-11 12:09:57
回答 1查看 170关注 0票数 1

我尝试使用jq转换是成功的,但我没有得到我想要的结果。我试着得到我想要的结果,但这很难。

代码语言:javascript
运行
复制
jq -Rs '[ split("\n")[] | select(length > 0) | split(" ") |  {group:.[0], instnace: .[1], value: .[2]} ]' input.txt

原始的txt文件。总共有从cpu20到46的IP地址和值​​。

代码语言:javascript
运行
复制
cpu20 10.0.20.1 12
cpu20 10.0.20.1 22
cpu20 10.0.20.1 13
cpu20 10.0.20.1 11
cpu20 10.0.20.1 14

....~cpu46

这是我努力的结果。输出json

代码语言:javascript
运行
复制
{
    "group": "cpu-46",
    "instnace": "10.0.46.94",
    "value": "10"
  },
  {
    "group": "cpu-46",
    "instnace": "10.0.46.95",
    "value": "10"
  },
  {
    "group": "cpu-46",
    "instnace": "10.0.46.96",
    "value": "11"
  },
  {
    "group": "cpu-46",
    "instnace": "10.0.46.97",
    "value": "8"
  },
  {
    "group": "cpu-46",
    "instnace": "10.0.46.98",
    "value": "11"
  },
  {
    "group": "cpu-46",
    "instnace": "10.0.46.99",
    "value": "11"
  },
  {
    "group": "cpu-46",
    "instnace": "10.0.46.100",
    "value": "8"
  }

我应该怎么做才能得到以下结果?

代码语言:javascript
运行
复制
    {
  "CPU20": [
    { "instance": "10.0.20.1", "value": 12 },
    { "instance": "10.0.20.2", "value": 22 },
    { "instance": "10.0.20.3", "value": 13 },
    { "instance": "10.0.20.4", "value": 11 },
    { "instance": "10.0.20.5", "value": 14 }
  ],
  "CPU21": [
    { "instance": "10.0.21.1", "value": 15 },
    { "instance": "10.0.21.2", "value": 24 },
    { "instance": "10.0.21.3", "value": 21 },
    { "instance": "10.0.21.4", "value": 15 },
    { "instance": "10.0.21.5", "value": 16 }
  ],
  "CPU22": [
    { "instance": "10.0.22.1", "value": 12 },
    { "instance": "10.0.22.2", "value": 18 },
    { "instance": "10.0.22.3", "value": 19 },
    { "instance": "10.0.22.4", "value": 12 },
    { "instance": "10.0.22.5", "value": 13 }
  ],
  "CPU23": [
    { "instance": "10.0.20.1", "value": 17 },
    { "instance": "10.0.20.2", "value": 15 },
    { "instance": "10.0.20.3", "value": 21 },
    { "instance": "10.0.20.4", "value": 22 },
    { "instance": "10.0.20.5", "value": 25 }
  ]
}
EN

回答 1

Stack Overflow用户

发布于 2022-01-11 13:43:31

像ruby这样的脚本语言也可以在这里工作:

代码语言:javascript
运行
复制
ruby -rjson -e '
  data = Hash.new {|h, k| h[k] = []}
  File.new(ARGV.shift).each {|line|
    cpu, ip, num = line.split
    data[cpu] << {instance: ip, value: num.to_i}
  }
  puts JSON.dump(data)
' input.txt
代码语言:javascript
运行
复制
{"CPU20":[{"instance":"10.0.20.1","value":12},{"instance":"10.0.20.2","value":22},{"instance":"10.0.20.3","value":13},{"instance":"10.0.20.4","value":11},{"instance":"10.0.20.5","value":14}],"CPU21":[{"instance":"10.0.21.1","value":15},{"instance":"10.0.21.2","value":24},{"instance":"10.0.21.3","value":21},{"instance":"10.0.21.4","value":15},{"instance":"10.0.21.5","value":16}],"CPU22":[{"instance":"10.0.22.1","value":12},{"instance":"10.0.22.2","value":18},{"instance":"10.0.22.3","value":19},{"instance":"10.0.22.4","value":12},{"instance":"10.0.22.5","value":13}],"CPU23":[{"instance":"10.0.20.1","value":17},{"instance":"10.0.20.2","value":15},{"instance":"10.0.20.3","value":21},{"instance":"10.0.20.4","value":22},{"instance":"10.0.20.5","value":25}]}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70666584

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档