以json形式输出shell脚本

时间:2013-03-13 10:13:01

标签: json bash

我希望以json格式输出以下小shell脚本。

#!/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格式转换此类每个shell脚本的输出?

2 个答案:

答案 0 :(得分:1)

你可以试试这个

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

简要说明:首先,查看man cut,尤其是-f和-d参数。 \"只是双引号,前面应加一个反斜杠,以避免shell解释器的误解。最后,用here描述的任何用引号“`括起来的东西都会被执行。

答案 1 :(得分: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%"