【发布时间】:2010-06-25 00:00:56
【问题描述】:
假设我有一个如下所示的ps 命令:
ps -Ao args:80,time,user --sort time
它会给我一个“空格”分隔的行集。一行可能看起来像这样
paulnath -bash 00:00:00
我想说服 ps 用逗号(甚至制表符!)分隔,这样它就可以被其他语言自动处理。请注意,args 中可能会有空格,因此,按字段唤醒本身不会起作用。
【问题讨论】:
假设我有一个如下所示的ps 命令:
ps -Ao args:80,time,user --sort time
它会给我一个“空格”分隔的行集。一行可能看起来像这样
paulnath -bash 00:00:00
我想说服 ps 用逗号(甚至制表符!)分隔,这样它就可以被其他语言自动处理。请注意,args 中可能会有空格,因此,按字段唤醒本身不会起作用。
【问题讨论】:
您可以使用以下语法来放置自己的分隔符:
ps -Ao "%U,%t,%a"
【讨论】:
怎么样:
ps -Ao args:80,time,user --sort time |
sed 's/\([[:digit:]]\{2\}:\)\{2\}[[:digit:]]\{2\}/,\0,/'
这对格式(包括时间)很敏感,并且假定进程没有逗号。他们可以,但如果你想逃避它显然更复杂。
【讨论】:
,,将很难解析:)
您可能想从/proc/[0-9]*/ 获取所需的信息。我想你会发现它比 ps 的输出更易于编程访问。
【讨论】: