次の小さなシェル スクリプトの出力を 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形式に変換するにはどうすればよいですか?
あなたはこれを試すことができます
echo "{\"Cpu\":\"`top -b -d1 -n1 | grep Cpu | cut -f3 -d " " | cut -f1 -d %`\"}"
簡単な説明:最初にman cut
、特に-fおよび-d引数を見てください。sは単なる二重引用符であり、\"
シェルインタープリターによる誤解を避けるために、前に円記号を付ける必要があります。そして最後に、ここで説明するように、後ろ引用符``で囲まれたものはすべて実行されます。
この行を試してください:
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%"