用 bash 脚本统计词频

上周有朋友问一问题,他有一个包含若干行IP地址的文本文件,每个IP占一行,需要统计每个IP在文件中出现的次数,并且按照出现次数逆序排列。


开始的时候使用了一个 awk 脚本来解决这个问题:

#!/bin/awk -f
# filename: count_ip.awk

BEGIN {
}
{
        ip_map[$0]+=1
}
END {
        for (ip in ip_map) {
                print ip_map[ip] "/t" ip
        }
}

再执行

$: cat ip_file | awk -f count_ip.awk | sort -nr



后来发现其实没必要这么麻烦,利用管道组合三条命令也可以完成这个工作:

$: sort ip_file | uniq -c | sort -rn

版权声明:本文为holy_phoenix原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。