如何在Mac OS X中删除ps命令中的标题?

Pra*_*dep 13 macos bash shell ps

我使用特定的ps命令

ps -p <pid> -o %cpu, %mem
Run Code Online (Sandbox Code Playgroud)

这给了我一个结果

 %CPU %MEM
 15.1 10.0
Run Code Online (Sandbox Code Playgroud)

我想要做的就是打印这些数字,如15.1和10.0,没有标题.我试图使用'cut'.但它似乎适用于每一条线.

echo "$(ps -p 747 -o %cpu,%mem)" | cut -c 1-5
Run Code Online (Sandbox Code Playgroud)

给出类似的东西

 %CPU
  8.0
Run Code Online (Sandbox Code Playgroud)

如何获得没有标题的数字?

aba*_*ert 26

相当于GNU的BSD(以及更普遍的POSIX)ps --no-headers有点烦人,但是,从手册页:

 -o      Display information associated with the space or comma sepa-
         rated list of keywords specified.  Multiple keywords may also
         be given in the form of more than one -o option.  Keywords may
         be appended with an equals (`=') sign and a string.  This
         causes the printed header to use the specified string instead
         of the standard header.  If all keywords have empty header
         texts, no header line is written.
Run Code Online (Sandbox Code Playgroud)

所以:

ps -p 747 -o '%cpu=,%mem='
Run Code Online (Sandbox Code Playgroud)

而已.

如果你确实需要从任意命令中删除第一行,那么tail就是这么简单:

ps -p 747 -o '%cpu,%mem' | tail +2
Run Code Online (Sandbox Code Playgroud)

或者,如果您想要完全可移植:

ps -p 747 -o '%cpu,%mem' | tail -n +2
Run Code Online (Sandbox Code Playgroud)

cut命令是那种基于列的等效的更简单的基于行的命令的headtail.(如果你确实想要剪切列,它可以工作......但在这种情况下,你可能不会;首先传递-o你想要ps 的参数更简单,而不是通过额外的东西并尝试将它们剪掉.)

同时,我不确定为什么你认为你需要将某些东西作为回声的参数,当它与直接运行它具有相同的效果时,只会使事情变得更复杂.例如,以下两行是等效的:

echo "$(ps -p 747 -o %cpu,%mem)" | cut -c 1-5
ps -p 747 -o %cpu,%mem | cut -c 1-5
Run Code Online (Sandbox Code Playgroud)


小智 8

用途ps --no-headers:

--no-headers print no header line at all

或使用:

ps | tail -n +2
Run Code Online (Sandbox Code Playgroud)

  • 这可能适用于Linux; 它不适用于使用`ps`的BSD实现的Mac OS X,而不是GNU版本. (3认同)

Ste*_*eve 6

使用awk:

ps -p 747 -o %cpu,%mem | awk 'NR>1'
Run Code Online (Sandbox Code Playgroud)

使用sed:

ps -p 747 -o %cpu,%mem | sed 1d
Run Code Online (Sandbox Code Playgroud)

  • @abarnert:在Mac OS X上,基于BSD的ps(与GNU ps不同)没有文档记录的禁止标题行的机制。列的问题是有效的。sed 1d与tail +2相比有什么问题?它们近似相等,并且“ sed 1d”的血统比“ tail +2”的血统更长(很多年)。 (2认同)