我尝试使用jq转换是成功的,但我没有得到我想要的结果。我试着得到我想要的结果,但这很难。
jq -Rs '[ split("\n")[] | select(length > 0) | split(" ") | {group:.[0], instnace: .[1], value: .[2]} ]' input.txt
原始的txt文件。总共有从cpu20到46的IP地址和值。
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
{
"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"
}
我应该怎么做才能得到以下结果?
{
"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 }
]
}
发布于 2022-01-11 13:43:31
像ruby这样的脚本语言也可以在这里工作:
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
{"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}]}
https://stackoverflow.com/questions/70666584
复制相似问题