- # 找出最大数
- echo "1432"|awk -F "" '{for(i=1;i<=NF;i++){j=$i>j?$i:j};print j}'
- #找初最小数
- echo "1432"|awk -F "" '{for(i=1;i<=NF;i++){j=$1;j=$i<j?$i:j};print j}
[解析]
这应该是最传统的写法,用for循环逐个比较大小后输出最后的结果。
- #找出最大数
- echo "1432"|awk '{split($0,a,"");print a[asort(a)]}'
- #找出最小数
- 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]即是排序后的第一个值,也就是最小值。佩服紫云飞兄的思路。
阅读(3671) | 评论(4) | 转发(2) |