Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1613549
  • 博文数量: 409
  • 博客积分: 6240
  • 博客等级: 准将
  • 技术积分: 4908
  • 用 户 组: 普通用户
  • 注册时间: 2011-06-01 00:04
文章分类

全部博文(409)

文章存档

2021年(1)

2019年(1)

2017年(1)

2016年(13)

2015年(22)

2013年(4)

2012年(240)

2011年(127)

分类:

2011-10-20 11:14:11

原文地址:awk之找出最大值和最小值 作者:zooyo

  1. # 找出最大数
  2. echo "1432"|awk -F "" '{for(i=1;i<=NF;i++){j=$i>j?$i:j};print j}'

  3. #找初最小数
  4. echo "1432"|awk -F "" '{for(i=1;i<=NF;i++){j=$1;j=$i<j?$i:j};print j}
[解析]
  这应该是最传统的写法,用for循环逐个比较大小后输出最后的结果。
 
 
  1. #找出最大数
  2. echo "1432"|awk '{split($0,a,"");print a[asort(a)]}'


  3. #找出最小数
  4. echo "1432"|awk '{split($0,a,"");print a[!!asort(a)]}

[解析]

  这才是本文的重点,把数字拆分到数组a里,然后排序返回的是该数组的长度,asort(a)的结果就是4,a[4]的结果就是排序后最后一个值,也就是最大的值。反之,排序后返回的值是4,那么!4=0,!0=1,最终 !!asort(a) 的结果是1,那么a[1]即是排序后的第一个值,也就是最小值。佩服紫云飞兄的思路。

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