Linux中awk命令正确的求最大值、最小值、平均值、总和

test.txt文件内容:
9
11
35
21
42
118


求最大值:

awk 'BEGIN {max = 0} {if ($1+0 > max+0) max=$1} END {print "Max=", max}' test.txt
Max= 118


求最小值:

awk 'BEGIN {min = 65536} {if ($1+0 < min+0) min=$1} END {print "Min=", min}' test.txt
Min= 9


求和:

cat test.txt|awk '{sum+=$1} END {print "Sum= ", sum}'
Sum=  236


求平均值:

cat test.txt|awk '{sum+=$1} END {print "Avg= ", sum/NR}'
Avg=  39.3333


求最大值(错误的求法):
cat test.txt|awk 'BEGIN {max = 0} {if ($1>max) max=$1 fi} END {print "Max=", max}'
Max= 9

求最小值(错误的求法):
cat test.txt|awk 'BEGIN{min = 65536}{if ($1<min) min=$1 fi}END{print "Min=", min}'
Min= 11

求最大值(正确的求法):
cat test.txt|awk 'BEGIN {max = 0} {if ($1+0>max+0) max=$1 fi} END {print "Max=", max}'
Max= 118

求最小值(正确的求法):
cat test.txt|awk 'BEGIN{min = 65536}{if ($1+0<min+0) min=$1 fi}END{print "Min=", min}'
Min= 9




awk默认按照字符串比较的,如果要比较数值,需要先强制类型转换,即 $1+0,转换成整数。


Reference:

          http://xfeng.me/awk-get-max/

          http://www.ahlinux.com/shell/4072.html

          http://www.bkjia.com/LINUXxt/956509.html


阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/fireblue1990/article/details/51622416
个人分类: Linux
上一篇Linux中通过grep命令查看文件中包含的指定字符串
下一篇SVN 中trunk、tags、branches使用
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭