如何将awk语句的输出作为JSON对象返回?

时间:2016-09-12 11:03:40

标签: json node.js awk

我正在尝试通过Node JS运行shell脚本。我正在使用child_process和spawn来执行shell脚本。

Server.js

var deploysh = spawn('sh', [ 'VO.sh']);

shell脚本有一个awk脚本,它读取文件并尝试查找一些数据。

VO.sh

file='/home/sivasubr/node-project/VO.txt'
awk -F":" '{ 
  a[$1]+=$2
  count[$1]++
  if(max[$1] <  $2) max[$1]=$2
  if(min[$1]==NULL) min[$1]=$2
  if(min[$1] >  $2) min[$1]=$2
}

END{ 
  for(i in a)
    print i, a[i]/count[i], max[i], min[i]
}' $file

awk语句返回如下内容:

VO1: 15 10 5
VO2: 10 5 2

我需要将此awk语句的输出转换为JSON对象,以便我可以将数据表示为图形/图表。我该怎么做呢?

1 个答案:

答案 0 :(得分:0)

如果您不发出冒号,可以使用jq解析以下文本:

VO1 15 10 5
VO2 10 5 2

命令:

... awk ... | head -c-1 | 
jq '. | split("\n") | map( split(" ") | { label: .[0], avg: .[1], max: .[2], min: .[3] } )' -Rs

输出:

[
  {
    "label": "VO1",
    "avg": "15",
    "max": "10",
    "min": "5"
  },
  {
    "label": "VO2",
    "avg": "10",
    "max": "5",
    "min": "2"
  }
]