从顶部输出中删除标头



我想将一些进程数据写入文件。为此,我选择使用top。我想监视多个过程并绘制其加时性的表现图。

我正在使用Mac OS 10.12。我认为没有一种简单的方法来获取版本编号。

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

仅删除前10行,而不是每次迭代的前10行。谁能为此提供帮助?

awk 解决方案。

一个衬里:

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

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

最新更新