1

次の小さなシェル スクリプトの出力を json 形式で取得したいと考えています。

#!/bin/bash

 top -b -d1 -n1 | grep Cpu 

出力:

Cpu(s):  6.2%us,  1.6%sy,  0.2%ni, 90.9%id,  1.1%wa,  0.0%hi,  0.0%si,  0.0%st

必要な出力:

{"Cpu": "6.3" }

このようなすべてのシェルスクリプトの出力をjson形式に変換するにはどうすればよいですか?

4

2 に答える 2

2

あなたはこれを試すことができます

echo "{\"Cpu\":\"`top -b -d1 -n1 | grep Cpu | cut -f3 -d " " | cut -f1 -d %`\"}"

簡単な説明:最初にman cut、特に-fおよび-d引数を見てください。sは単なる二重引用符であり、\"シェルインタープリターによる誤解を避けるために、前に円記号を付ける必要があります。そして最後に、ここで説明するように、後ろ引用符``で囲まれたものはすべて実行されます

于 2013-03-13T11:05:50.673 に答える
0

この行を試してください:

your commands ...|awk  'BEGIN{FS="\\(s\\):\\s*";OFS="";q="\x22" }{$1=q$1q;sub(/%.*$/,"%",$2);$2=q$2q; print $1,$2}'

あなたのデータでテストしてください:

kent$  echo "Cpu(s):  6.2%us,  1.6%sy,  0.2%ni, 90.9%id,  1.1%wa,  0.0%hi,  0.0%si,  0.0%st"|awk  'BEGIN{FS="\\(s\\):\\s*";OFS="";q="\x22" }{$1=q$1q;sub(/%.*$/,"%",$2);$2=q$2q; print $1,$2}'
"Cpu""6.2%"
于 2013-03-13T10:57:02.377 に答える