Linux top -b仅显示特定列

时间:2013-11-06 15:44:36

标签: linux bash shell sed awk

我想捕获top命令的输出以在另一个程序中使用但是我只需要某些信息,更准确地说我只需要USER,PID,CPU,COMMAND列。 我已经使用命令top -b -n 1 | sed -n '7,12p'来过滤前5个结果,但我不能再进一步了,因为我对sed / awk了解不多。

示例:这是我得到的

PID USER    PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND  
4 root      20   0   98748  50608   4608 S  6.4  4.9 212:12.16 X  
1 root      20   0    2132    128     96 S  0.0  0.0   0:07.62 init  
2 root      20   0       0      0      0 S  0.0  0.0   0:00.01 kthreadd  
3 root      20   0       0      0      0 S  0.0  0.0   7:28.54 ksoftirqd/0

这就是我想要的

PID USER %CPU COMMAND  
 4 root  6.4 X  
 1 root  0.0 init  
 2 root  0.0 kthreadd  
 3 root  0.0 ksoftirqd/0

2 个答案:

答案 0 :(得分:3)

传递给:

awk '{print $1,$2,$9,$NF}'

答案 1 :(得分:0)

一切都结合在一起。

top -b -n 1 | awk 'NR>6 && NR<13 {printf "%6s %-4s %-4s %-s\n",$1,$2,$9,$NF}'