![ps -l:正则表达式仅显示好感](https://linux22.com/image/212059/ps%20-l%EF%BC%9A%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F%E4%BB%85%E6%98%BE%E7%A4%BA%E5%A5%BD%E6%84%9F.png)
我需要帮助使用 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}'