awk之数据类型

5650阅读 0评论2014-07-23 zooyo
分类:LINUX

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

  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就会自动转换成数字了.
上一篇:awk之比较ASCII字符
下一篇:awk之进制转换