awk統計示例
(1)awk求和
awk '{sum+=$1} END {print "Sum = ", sum}' test.txt
(2)平均值
awk '{sum+=$1} END {print "Average = ", sum/NR}' test.txt
(3)求最大值
awk 'BEGIN {max = 0} {if ($1>max) max=$1 fi} END {print "Max=", max}'test.txt
(4)求最小值(min的初始值設定一個超大數即可)
awk 'BEGIN {min = 1999999} {if ($1<min) min=$1 fi} END {print "Min=", min}'test.txt
(5)統計檔案test.txt中第2列不同值出現的次數
awk '{sum[$2]+=1}END{for(i in sum)print i"\t"sum[i]}'test.txt
(6)如只統計檔案test.txt中第2列"00"或"01"出現的次數,命令可寫為
awk '{if($2=="00") ++sum1;if($7=="01") ++sum2}END{print "00""\t"sum1"\n""01""\t"sum2}' test.txt
(7)統計文字各個欄位出現次數
awk '{ for (i=1;i<=NF;i++){a[$i]++} } END{for (b in a) print b": "a[b]}' test.txt
(8)統計訪問次資料前10的ip,配合使用sort排序
awk '{sum[$1]++}END{for(ip in sum) print ip, sum[ip]}' test.txt | sort -rn -k 2|head
(9)for、if巢狀,統計訪問量高於某個臨界值的ip,例如大於2350
awk '{sum[$1]++}END{for(ip in sum)if(sum[ip]>2350) print ip, sum[ip]}' test.txt | sort -rn -k 2
(10)統計狀態碼為200、訪問量最大的ip前5名(2列)
awk '{if($6=="200")sum[$1,$6]++}END{for(ip_num in sum)print ip_num,sum[ip_num]}' test.txt |sort -rn -k 2|head -5
(11)統計行數
awk '{print NR}' test.txt | tail -n 1
歡迎大家關注我的公眾號

半畝房頂