2016-09-12 14 views
0

ノードJSを介してシェルスクリプトを実行しようとしています。私はchild_processを使用して、シェルスクリプトを実行するためにspawnを使用しています。awk文の出力をJSONオブジェクトとして返す方法は?

Server.js

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

シェルスクリプトは、ファイルを読み込み、いくつかのデータを見つけようと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" 
    } 
] 
関連する問題