从顶部输出中删除标题

从顶部输出中删除标题

问题描述:

我想将一些过程数据写入文件。为此,我选择使用top。我想监视几个过程并绘制他们的加班时间表。从顶部输出中删除标题

我使用的是Mac OS 10.12。我不认为有一个简单的方法来获取版本号。

现在我有命令: top -l 2 -n 5 -o mem | awk '{ printf("%-8s %-12s %-6s %-6s\n", $1, $2, $3, $8); }'

导致下面的输出:

Processes: 390   total, 2015 
2017/09/15 00:41:51 
Load  Avg:   2.07, 
CPU  usage:  5.11% idle 
SharedLibs: 169M   resident, 
MemRegions: 117317  total, 1807M 
PhysMem: 15G   used 
VM:  2149G   vsize, swapins, 
Networks: packets:  24606796/21G 
Disks: 2934900/103G read, 

PID  COMMAND  %CPU MEM 
0   kernel_task 0.0 1594M+ 
94178  idea   0.0 897M+ 
621  Google  Chrome 1 
277  Google  Chrome 3865+ 
31724  Slack   Helper 223+ 
Processes: 390   total, 2021 
2017/09/15 00:41:52 
Load  Avg:   2.07, 
CPU  usage:  4.47% idle 
SharedLibs: 169M   resident, 
MemRegions: 117317  total, 1807M 
PhysMem: 15G   used 
VM:  2149G   vsize, swapins, 
Networks: packets:  24606796/21G 
Disks: 2934900/103G read, 

PID  COMMAND  %CPU MEM 
0   kernel_task 3.9 1594M- 
94178  idea   1.3 897M 
621  Google  Chrome 1 
277  Google  Chrome 3866+ 
31724  Slack   Helper 223 

不过,我想删除的标题,并留下:

PID  COMMAND  %CPU MEM 
0   kernel_task 0.0 1594M+ 
94178  idea   0.0 897M+ 
621  Google  Chrome 1 
277  Google  Chrome 3865+ 
31724  Slack   Helper 223+ 
0   kernel_task 3.9 1594M- 
94178  idea   1.3 897M 
621  Google  Chrome 1 
277  Google  Chrome 3866+ 
31724  Slack   Helper 223 
所有批次均为

。我也可以省略PID COMMAND %CPU MEM这一行。

我已经试过管道进入sed,但下面的命令

top -l 2 -n 5 -o mem | sed '1,10d;n;' | awk '{ printf("%-8s %-12s %-6s %-6s\n", $1, $2, $3, $8); }'

只删除第10行,不是第10行,每行迭代。有人能帮忙吗?

+0

作为一个建议:因为pid不止一次出现,你可以打印最后一次出现。 –

awk解决方案。

一个班轮:

top -l 2 -n 5 -o mem | awk '/^PID/{if (p) next; p=1} p && NF>30 {printf("%-8s %-12s %-6s %-6s\n", $1, $2, $3, $8)}' 

解释:

/^PID/{     # line starts with PID 
    if (p) next;    # if this is second time around, skip 
    p=1      # else: set var p to 1 
} 
p && NF>30 {    # if p is set and number of fields > 30, print   
    printf("%-8s %-12s %-6s %-6s\n", $1, $2, $3, $8) 
} 

输出:

$ top -l 2 -n 5 -o mem | awk '/^PID/{if (p) next; p=1} p && NF>30 {printf("%-8s %-12s %-6s %-6s\n", $1, $2, $3, $8) }' 
PID  COMMAND  %CPU MEM 
0   kernel_task 0.0 1950M+ 
320  idea   0.0 1007M+ 
14246  thunderbird 0.0 541M+ 
3142  Google  Chrome 1 
3136  Google  Chrome 2153+ 
0   kernel_task 2.0 1950M- 
320  idea   3.1 1007M 
14246  thunderbird 0.0 541M 
3142  Google  Chrome 1 
3136  Google  Chrome 2153 

现在你知道我的邮件客户端是什么。