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

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

文章分类

全部博文(272)

文章存档

2015年(2)

2014年(5)

2013年(25)

2012年(58)

2011年(182)

分类: LINUX

2014-07-23 22:11:29

今天群里提出个问题, 跟大家分析一下:

  1. echo -e '20.7\n25.5\n3'|awk '{a[$0]}END{for(i in a){if(i>20)print i}}'
  2. 25.5
  3. 20.7
  4. 3
很明显, 3是不应该出现的, 在这里awk取出数组下标时当成了字符串来处理, 3比2大, 所以输出了3. 怎么当成数字来处理呢? 这里有个小技巧.
  1. echo -e '20.7\n25.5\n3'|awk '{a[$0]}END{for(i in a){if((i+0)>20)print i}}'
  2. 25.5
  3. 20.7
把字符串加零, 做一次数学运算, awk就会自动转换成数字了.
阅读(5571) | 评论(0) | 转发(2) |
1

上一篇:awk之比较ASCII字符

下一篇:awk之进制转换

给主人留下些什么吧!~~