2010-06-25 98 views
8

假设一个CSV名单上有一个ps命令看起来像这样:生成从Linux的“PS”

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

它会给我一个“空间”分隔设置的行。一排可能是这样的

paulnath -bash 00:00:00 

我想说服PS用逗号分隔(或标签甚至是!),使得它可以被其他语言自动地处理。请注意,参数可能会有空格,所以,按字段进行并不是本身的工作。

回答

14

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

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

是所谓的AIX格式描述符。并不是所有的ps列都有这样的描述符。例如rsz列没有它。 – 2014-05-04 18:40:57

-1

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

0

如何:

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

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

+0

留在最后的命令行,否则,如果在命令行中包含了一些','这将是很难解析:) – 2010-06-25 00:19:01