Chinaunix首页 | 论坛 | 博客
  • 博客访问: 742925
  • 博文数量: 130
  • 博客积分: 2951
  • 博客等级: 少校
  • 技术积分: 1875
  • 用 户 组: 普通用户
  • 注册时间: 2010-03-04 18:32
文章分类

全部博文(130)

文章存档

2013年(1)

2012年(129)

分类: Python/Ruby

2012-03-13 12:44:22

群里有个人想统计下面各列的最小值和最大值:
Linux 2.6.9-22.ELsmp (remote)     03/10/12

Time: 03:00:01
avg-cpu:  %user   %nice    %sys %iowait   %idle
           0.02    0.00    0.05    0.08   99.86

Time: 03:00:06
avg-cpu:  %user   %nice    %sys %iowait   %idle
           0.00    0.00    0.05    0.15   99.80

Time: 03:00:11
avg-cpu:  %user   %nice    %sys %iowait   %idle
           0.00    0.00    0.05    0.35   99.60

Time: 03:00:16
avg-cpu:  %user   %nice    %sys %iowait   %idle
           0.00    0.00    0.05    0.10   99.85

Time: 03:00:21
avg-cpu:  %user   %nice    %sys %iowait   %idle
           0.00    0.00    0.10    0.20   99.70

。。。。。。。。。。。。。。。。。。。。。

用AWK可以比较简单的实现:
statistics.awk
  1. awk -F " " 'BEGIN{usermin=100; \
  2.                   usermax=0.00; \
  3.                   nicemin=100; \
  4.                   nicemax=0.00; \
  5.                   sysmin=100; \
  6.                   sysmax=0.00; \
  7.                   iowaitmin=100; \
  8.                   iowaitmax=0.00; \
  9.                   idlemin=100; \
  10.                   idlemax=0.00
  11.              }
  12.              NF==5{ if($1>usermax)usermax=$1; \
  13.                     if($1
  14.                     if($2>nicemax)nicemax=$2; \
  15.                     if($2
  16.                     if($3>sysmax)sysmax=$3; \
  17.                     if($3
  18.                     if($4>iowaitmax)iowaitmax=$4; \
  19.                     if($4
  20.                     if($5>idlemax)idlemax=$5; \
  21.                     if($5
  22.              }
  23.              END{print "User min: ",usermin;
  24.                  print "User max: ",usermax;
  25.                  print "nice min: ",nicemin;
  26.                  print "nice max: ",nicemax;
  27.                  print "sys min: ",sysmin;
  28.                  print "sys max: ",sysmax;
  29.                  print "iowait min: ",iowaitmin;
  30.                  print "iowait max: ",iowaitmax;
  31.                  print "idle min: ",idlemin;
  32.                  print "idle max: ",idlemax;
  33.              }' $1
用法:./statistics.awk filename

结果:
[root@SKCServer-RHEL6 Documents]# ./statistics.awk remoteiostatc.log
User min:  0.00
User max:  1.25
nice min:  0.00
nice max:  0
sys min:  0.00
sys max:  17.16
iowait min:  0.00
iowait max:  4.45
idle min:  79.50
idle max:  100.00


阅读(1224) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~