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,轉換成整數。

 

當然,在實際工作中要統計耗時等,不可能每行正好是一個數字,要從茫茫日志中做統計,需綜合利用grep、awk等命令。如如下命令先從日志中獲得如上test.txt文件。

grep 關鍵字 large.log | awk -F '"t":"' '{print $2}' | awk -F '","' '{print $1}' > test.txt

 

文章來源:http://blog.csdn.net/fireblue1990/article/details/51622416

參考文章:http://xfeng.me/awk-get-max/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM