1

我想以 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 脚本的输出?

4

2 回答 2

2

你可以试试这个

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

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

于 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 回答