awk统计示例

作者: 半亩房顶 | 来源:发表于2019-03-13 22:03 被阅读1次

    (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
    

    欢迎大家关注我的公众号


    半亩房顶

    相关文章

      网友评论

        本文标题:awk统计示例

        本文链接:https://www.haomeiwen.com/subject/gwuxmqtx.html