用 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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章