一、基本统计
先看密码文档 www.csdn.net.sql 格式用户名 # 密码 # 邮箱
以' # '分列
3个字符可以用awk等进行切割
使用到的相关统计命令与参数为
sort -g 按照 常规数值排序 -r 逆序输出排序结果 -k 排序的列 uniq -c 统计数量 -d 只输出重复的行
例:统计密码使用频率并按使用频率从多到少排列
awk -F ' # ' '{print $2}' www.csdn.net.sql|sort|uniq -cd|sort -rgk1|tee password_frequency.txt
输出
235012 123456789 212749 12345678 76346 11111111 46053 dearbook 34952 00000000 ...
@之后的都作为域名一部份,并转成小写,转成小写也可以通过命令tr [:upper:] [:lower:]
perl -pe 's/.*@(.*)/lc($1)/ei' www.csdn.net.sql|tr -d "\r"|sort|uniq -c|sort -rgk1 > email_frequency.txt
1976210 qq.com 1766931 163.com 807897 126.com 351594 sina.com 205491 yahoo.com.cn ...
比如vip.qq.com和qq.com都作qq,只统计常用域名com, net, edu等
perl -ne '/.*@.*?([^\.]+)\.(com|edu|net|org|cn).*/i && print "\L$1\n"' www.csdn.net.sql|sort|uniq -c|sort -rgk1 > email_agency_frequency.txt
2012384 qq 1785057 163 808173 126 396855 sina 326406 yahoo 204509 hotmail 187087 gmail 105379 sohu 72470 tom ...
二、图形化统计结果
图形化的工具有gnuplot,R语言等,我这里使用了R语言例4:由邮箱频率前9名与其余总和生成饼图
输出前9名与其总和 awk 'NR < 10 { print $1, $2 } NR >= 10 { others += $1} END { print others, "others" }' email_agency_frequency.txt > email_agency_top10.txt
2012384 qq 1785057 163 808173 126 396855 sina 326406 yahoo 204509 hotmail 187087 gmail 105379 sohu 72470 tom 516409 others
R脚本
table <- read.table("email_agency_top10.txt")
percent <- round(table$V1/sum(table$V1)*100)
png(file="email_agency_market_share.png", width=500, height=500)
pie(table$V1, labels=paste(table$V2, '(', percent, '%)', sep=""), col=rainbow(length(table$V1)), main="邮箱占有率", family='DejaVu Sans')

三、相关链接
gawksed
perl
R语言