从Linux'ps'生成一个CSV列表

假设我有一个ps命令,如下所示:

 ps -Ao args:80,time,user --sort time 

它会给我一个“空间”分隔的行集。 一排可能看起来像这样

 paulnath -bash 00:00:00 

我想说服ps用逗号(甚至制表符)来分隔,以便可以用其他语言自动处理。 请注意,参数中可能会有空格,所以,按字段大小写并不是本身的工作。

您可以使用以下语法来放置自己的分隔符:

 ps -Ao "%U,%t,%a" 

怎么样:

 ps -Ao args:80,time,user --sort time | sed 's/\([[:digit:]]\{2\}:\)\{2\}[[:digit:]]\{2\}/,\0,/' 

这对包括时间在内的格式很敏感,并且假定进程没有逗号。 他们可以,但如果你想逃避,那显然更复杂。

您可能想从/ proc / [0-9] * /中获取所需的信息。 我想你会发现它比编程的输出更可编程访问。