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