讓文本飛 linux shell腳本數據挖掘實踐
參考書:Linux Shell 腳本攻略
對文件中的以下網址排序,統計出出現次數排名top3的網址。
文件名:
website
http://www.google.com http://www.baidu.com http://www.sina.com http://www.bjtu.edu.cn http://www.codeproject.com http://www.csdn.com http://www.sohu.com http://www.yahoo.com http://mail.163.com http://www.bjtu.edu.cn http://www.codeproject.com http://www.csdn.com http://www.sohu.com http://www.yahoo.com http://mail.163.com http://www.codeproject.com http://www.csdn.com http://www.sohu.com http://www.yahoo.com http://mail.163.com http://www.qq.com http://www.hao123.com http://www.163.com http://youku.com http://taobao/com http://www.bjtu.edu.cn http://www.codeproject.com http://www.csdn.com http://www.sohu.com http://www.yahoo.com http://mail.163.com http://www.codeproject.com http://www.csdn.com http://www.sohu.com http://www.yahoo.com http://mail.163.com http://www.qq.com http://www.hao123.com http://www.163.com http://youku.com http://taobao/com
shell腳本如下:
#!/bin/bash
#文件名:websort
#用途:計算文件中網址出現的次數
foo()
{
if [ $# -ne 1 ];
then
echo "Usage:$0 filename";#$0腳本名字
exit -1
fi
filename=$1#函數第一個參數
egrep -o "http://[a-zA-Z0-9.]+\.[a-zA-Z]{2,3}" $filename | \
#網站出現的次數統計,用到關聯數組
awk '{ count[$0]++ }#$0代表每行,只需遍歷一次
END{ printf("%-30s%s\n","wensite","count");
for(ind in count)
{ printf("%-30s%d\n",ind,count[ind]); }
}'
}
#輸出出現次數排名前三位的網址
foo website | sort -nrk 2 | head -n 3 >websorted2.txt;
鍵入websort
輸出
http://www.yahoo.com 5
http://www.sohu.com 5
http://www.csdn.com 5
轉載請註明出處http://write.blog.csdn.net/postlist