Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2985654
  • 博文数量: 272
  • 博客积分: 5544
  • 博客等级: 大校
  • 技术积分: 5496
  • 用 户 组: 普通用户
  • 注册时间: 2011-03-08 00:48
个人简介

  每个人都要有一个骨灰级的爱好,不为金钱,而纯粹是为了在这个领域享受追寻真理的快乐。

文章分类

全部博文(272)

文章存档

2015年(2)

2014年(5)

2013年(25)

2012年(58)

2011年(182)

分类: LINUX

2011-11-24 15:29:05

cat file
1       9
1       10
1       12
2       100
2       23
2       101
2       99
3       10
3       998
3       1



最大值的行:
  1. 数组版:
  2. awk '{if(a[$1]<$2)a[$1]=$2}END{for(i in a)print i,a[i]}' file

  3. 非数组版:
  4. awk '{if($1==x){if(y>$2)next}else{if(NR>1)print z};x=$1;y=$2;z=$0}' file <(echo)
[解析]
求最大值最简单,因为数组为定义的初值都是0,只要比它大的都赋值给它。



最小值的行:
  1. 数组版:
  2. awk '!length(a[$1]) || $2<a[$1]{a[$1]=$2}END{for(i in a)print i,a[i]}' file

  3. 非数组版:
  4. awk '{if($1==x){if(y>$2){z=$0;y=$2}}else{if(NR>1)print z;x=$1;y=$2;z=$0}}' file <(echo)
[解析]
最小值行稍微麻烦一些,数组的初值是0,不利于比较,只有当它为空的时候,把第一个特征的行的 $2 赋给它,继续发现比它还小的,也赋值给数组。

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

li09242013-09-18 16:21:00

求最小值;
sort -k1n -k2n zooyo03 | awk '! a[$1]++'
求最大值;
sort -k1n -k2n zooyo03 | awk '{a[$1]=$2}END{for(i in a)print i"\t"a[i]}'