2016-09-12 72 views
0

我想通過節點JS運行一個shell腳本。我正在使用child_process併產生執行shell腳本。如何將awk語句的輸出作爲JSON對象返回?

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對象,這樣我可以將數據表示爲圖表/圖表。我該如何解決它?

+0

請提供一些例子輸入和預期輸出 – Thor

+0

修改END部分以打印出您想要的任何格式。 – ReluctantBIOSGuy

回答

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" 
    } 
] 
相關問題