ps -l:正则表达式仅显示好感

ps -l:正则表达式仅显示好感

我需要帮助使用 sed 正则表达式提取进程的良好级别。

输出的粗略示例

ps -l 4411
<stuff*> NI <*stuff>
<stuff*> 19 <*stuff>

问题

我想要 NI 和 19。

我不知道如何同时获得 NI 和 19,目前我有:

ps -l 4411 | \
sed s'#.*\(NI\).*#\1#'g
NI
<*numbers*>

这当然只会让我“NI”,我不知道如何提取它的底部。

答案1

您可以避免使用sed或任何其他命令行工具,例如awk。您可以使用相同的ps命令来指定列:

ps -o ni 4411
#or 
ps -o nice 4411

这将显示如下内容:

 NI
 19

如果您确实想使用命令行工具,那么您应该使用awk.

awk

如果ps -l 4411返回这个:

F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY        TIME CMD
0 S  1000 22150  4822  0  80   0 -  2773 sigsus pts/4      0:01 /bin/zsh

NI那么你应该使用以下方法获得第 8 列:

ps -l 22150 | awk '{print $8}'

相关内容