使用'grep'命令保留列名的方式



我注意到"grep"命令删除了列名。我需要根据以下命令自定义进程的输出:

ps -ef | egrep "java|mysql" | awk {'print $1, $2, $8'}

常规的"ps"(甚至带有"awk"(具有列名:UID,PID等...但是,当我添加"grep"时,列名消失了。理想情况下,我必须具有显示 4 列的"ps"输出 - PID、用户名、CMD 和内存使用情况。如何让它保留列名。

grep 命令将去除标头,因为它们不匹配。只需使用awk并在第一行条件上匹配搜索模式。

ps -ef |  awk 'NR==1{print $1,$2,$8} /java|mysql/{print $1, $2, $8}'

使用bash的力量。

$ cat pid_top.sh
#!/bin/bash
echo "Enter String:"
read p
top -n 1 -b -p $(ps -e | grep $p | awk '{print $1}') | tail -n 2

不要忘记chmod +x pid_top.sh

制作别名或按名称运行脚本,输入一个字符串,例如,对于 Firefox 只需触发一个您将拥有并输出如下:

$ ./p*
Enter String:
fire
PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     ZEIT+ BEFEHL
2983 bang      20   0 1605624 600168 108940 S   0,0 15,1  40:28.10 firefox

最新更新