将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

如何将simpe
ps 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

我可以要求更多的帮助吗?我可以要求更多的帮助吗?