将ps aux转换为json
我尝试将将ps aux转换为json,json,linux,jq,Json,Linux,Jq,我尝试将ps aux的输出转换为Json格式,而不使用Perl或Python!关于这些,我已经读到了关于jq的文章。但我成功地将命令行输出转换为json 如何将simpeps aux转换为Json ps aux | awk ' BEGIN { ORS = ""; print " [ "} { printf "%s{\"user\": \"%s\", \"pid\": \"%s\", \"cpu\": \"%s\"}", separator, $1, $2, $3 separat
ps aux
的输出转换为Json格式,而不使用Perl或Python!关于这些,我已经读到了关于jq的文章。但我成功地将命令行输出转换为json
如何将simpeps aux
转换为Json
ps aux | awk '
BEGIN { ORS = ""; print " [ "}
{ printf "%s{\"user\": \"%s\", \"pid\": \"%s\", \"cpu\": \"%s\"}",
separator, $1, $2, $3
separator = ", "
}
END { print " ] " }';
只需调整ps aux输出所需的列
只需调整ps aux输出中所需的列。
jq
可以读取非JSON输入。您需要先使用awk
预处理输入:
ps aux |
awk -v OFS=, '{print $1, $2}' |
jq -R 'split(",") | {user: .[0], pid: .[1]}'
如果需要数组而不是对象序列,则通过
jq--slurp'add'
管道输出。(我发誓有一种不用额外调用jq
就能做到这一点的方法,但我现在想不起来了。)jq
可以读取非JSON输入。您需要先使用awk
预处理输入:
ps aux |
awk -v OFS=, '{print $1, $2}' |
jq -R 'split(",") | {user: .[0], pid: .[1]}'
如果需要数组而不是对象序列,则通过
jq--slurp'add'
管道输出。(我发誓有一种方法可以做到这一点,而无需额外调用jq
,但我现在想不起来了。)这里有一个基于标记化的唯一jq解决方案
标记化可通过以下方式完成:
def tokens:
def trim: sub("^ +";"") | sub(" +$";"");
trim | splits(" +");
为了说明和简洁,我们只考虑前10个标记:
[tokens] | .[0:9]
调用:
$ ps aux | jq -c -R -f tokens.jq
或者,作为一个单一的班轮,您可以:
$ ps aux | jq -cR '[splits(" +")] | .[0:9]'
输出的前几行:
["USER","PID","%CPU","%MEM","VSZ","RSS","TT","STAT","STARTED"]
["p","1595","55.9","0.4","2593756","32832","??","R","24Jan17"]
["p","12472","26.6","12.6","4951848","1058864","??","R","Sat01AM"]
["p","13239","10.9","1.5","4073756","128324","??","R","Sun12AM"]
["p","12482","7.8","1.2","3876628","101736","??","R","Sat01AM"]
["p","32039","7.7","1.4","4786968","118424","??","R","12Feb17"]
["_windowserver","425","7.6","0.8","3445536","65052","??","Ss","24Jan17"]
将标题用作对象键
见例。
这里是唯一一个基于标记化的jq解决方案 标记化可通过以下方式完成:
def tokens:
def trim: sub("^ +";"") | sub(" +$";"");
trim | splits(" +");
为了说明和简洁,我们只考虑前10个标记:
[tokens] | .[0:9]
调用:
$ ps aux | jq -c -R -f tokens.jq
或者,作为一个单一的班轮,您可以:
$ ps aux | jq -cR '[splits(" +")] | .[0:9]'
输出的前几行:
["USER","PID","%CPU","%MEM","VSZ","RSS","TT","STAT","STARTED"]
["p","1595","55.9","0.4","2593756","32832","??","R","24Jan17"]
["p","12472","26.6","12.6","4951848","1058864","??","R","Sat01AM"]
["p","13239","10.9","1.5","4073756","128324","??","R","Sun12AM"]
["p","12482","7.8","1.2","3876628","101736","??","R","Sat01AM"]
["p","32039","7.7","1.4","4786968","118424","??","R","12Feb17"]
["_windowserver","425","7.6","0.8","3445536","65052","??","Ss","24Jan17"]
将标题用作对象键
见例。
我有一个将ps输出转换为json的方法。它在外壳下使用jq,所以您需要安装它。但是您不需要知道jq,我有一个将ps输出转换为json的方法。它在外壳下使用jq,所以您需要安装它。但是你不需要知道jq我可以要求更多的帮助吗?我可以要求更多的帮助吗?