我需要从top
的输出中获取特定字段。我该怎么做?
我有
top -b -n 10 -d 10
top - 05:16:04 up 24 days, 49 min, 2 users, load average: 0.00, 0.00, 0.00
Tasks: 494 total, 1 running, 493 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 65971500k total, 4028640k used, 61942860k free, 420512k buffers
Swap: 10485756k total, 0k used, 10485756k free, 1134108k cached
我需要来自top
行的时间,以及来自Mem
行的使用值;在此示例中,该05:16:04
和4028640k
。
以下awk脚本为我提供了时间字段:
{
for (i=1;i<NF;i++) {
if($i~/[0-9][0-9]:[0-9][0-9]:[0-9][0-9]/){
print $i
}
}
}
如何提取使用的内存?
答案 0 :(得分:0)
使用awk读取“字段”的功能,默认情况下用空格分隔,以及 top 的信息的固定位置(作为字段引用)
awk '$1 ~ /^top$/ { Time = $3 }
$1 ~ /^Mem:$/ { Mem = $4 #it include the trailing "k"}
END { print Time OFS Mem }
'
我使用END部分进行打印,使用Variable来提醒信息以显示如何捕获并稍后使用它,但在这种情况下直接printf就足够了。
awk '/^top/{printf("%s",$3)}/^Mem:/{print OFS $4}'