使用bash ps和切割在一起

dar*_*sys 28 unix bash cut ps

我需要从'ps'中提取PID,UID和命令字段,我已经尝试过这样:

ps -L u n | cut -f 1,2,13

出于某种原因,这表现为没有任何切割命令.它只返回正常的ps输出.然后,我试过了

ps -L u n | tr -s " " | cut -d " " -f 1,2,13这会返回完全废话.然后,我尝试用它来玩这个:

ps -L u n | tr -s " " | cut -d " " -f 2,3,14

并且它以某种方式返回我需要的东西(差不多,我不明白为什么这几乎可以工作),除了它在它的中间切出命令字段.我怎样才能得到我需要的东西?

Exp*_*lls 46

ps正在打印出空格分隔符,但cut没有-d使用制表符.将tr -s空间挤压在一起以获得您想要的更多分离,但请记住,有一组初始空间(挤压到一个),因此您需要为每个字段添加1.此外,命令中的每个单词都有空格.这应该工作:

ps -L u n | tr -s " " | cut -d " " -f 2,3,14-
Run Code Online (Sandbox Code Playgroud)


小智 14

使用剪切是否有任何特殊原因?

我想这会做你想要的:

ps -eopid,uid,cmd
Run Code Online (Sandbox Code Playgroud)

  • 并非每个 Unix 都为 `ps` 提供这些选项,而每个 Unix 都提供 `cut`。 (2认同)

小智 13

您可以使用awk清理命令,如下所示:

ps -L u n | awk '{ print $1,$2,$13 }'
Run Code Online (Sandbox Code Playgroud)