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

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

文章分类

全部博文(272)

文章存档

2015年(2)

2014年(5)

2013年(25)

2012年(58)

2011年(182)

分类: LINUX

2011-08-21 16:30:28

  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]即是排序后的第一个值,也就是最小值。佩服紫云飞兄的思路。

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

li09242013-09-05 16:28:42

牛逼;充分利用了asort函数啊!

yangkyo8212012-01-22 16:50:42

a[!!asort(a)] 强悍啊

linux_kaige2011-10-20 11:14:04

lionfun2011-08-21 19:39:07