1、在Windows下的用戶要使用shell命令符的話請先安裝cygwin,安裝方法:Cygwin安裝詳解,快速安裝所有插件,無需聯網,鏈接見下面的原文鏈接。
下面筆者粗略介紹下seo日志分析常用的命令符用法,需要詳細了解每個命令符請使用Google
less *.log 查看文件內容,按“q” 退出
cat log.log 打開文件,可以多次打開幾個文件,舉例:
grep -參數 文件名
head -* 顯示*行,*為數字
head -100 log.log | tail -10 >>a.log 提取文件第91-100行數據
sort –參數 文件名 對文件進行排序
uniq -參數 對文件去重,去重前需要使用排序sort
split -參數 文件名 對文件進行切割
"|" 管道,把上一條命令的結果傳輸給下一條命令
“>” 和“>> ” 重定向寫入文件中
awk -F Pattern {action} 文件名 使用指定的字符對每一行數據進行分段,默認是空格(網站日志就是空格分開)
案例:計算baiduspider下載文件總大小
$ awk ‘{print $10}’ baidu.log |awk ‘BEGIN{total=0}{total+=$1}END{print total}’
bash shell.sh 運行shell.sh腳本
nslookup ip 查詢地址是否是百度蜘蛛
dos2unix *.sh 將“\r\n”轉換成“\n”Windows——>linux (由於Windows和Linux下的換行符不同,所以我們在Windows下面下的代碼需要使用dos2unix 轉換成Linux下的換行符,否則運行shell腳本會報錯)
unix2dos xxoo.sh 將“\n”轉換成“\r\n” linux——>Windows
rm xx.txt 刪除xx.txt文件
3、一些簡單的命令符介紹到這裡,需要了解shell,建議大家查看相關的書籍,下面我們開始使用shell分析日志。
1、切割百度的抓取數據(將文件切割出來對專門的蜘蛛進行處理能提高效率)
cat log.log |grep -i ‘baiduspider’ >baidu.log
2、網站狀態碼個數查詢(隱藏的是狀態碼個數)
awk ‘{print $9}’ baidu.log|sort|uniq -c|sort -nr
3、百度總抓取量
wc -l baidu.log
4、百度不重復抓取量
awk ‘{print $7}’ baidu.log|sort|uniq|wc -l
5、百度平均每次抓取的數據大小(結果是KB)
awk ‘{print $10}’ baidu.log|awk ‘BEGIN{a=0}{a+=$1}END{ print a/NR/1024}’
6、首頁抓取量
awk ‘$7~/\.com\/$/’ baidu.log|wc -l
7、某目錄抓取量
grep ‘/news/’ baidu.log|wc -l
8、抓取最多的10個頁面
awk ‘{print $7}’ baidu.log|sort|uniq -c|sort -nr|head -10
9、找出抓取的404頁面
awk ‘$9~ /^404$/ {print $7}’ baidu.log|sort|uniq|sort -nr
10、找出抓取了多少js文件和文件抓取的次數(可以看出百度基本不抓JS)
awk ‘$7~ /.js$/ {print $7}’ baidu.log|sort|uniq -c |sort -nr
相信看到這裡大家已經有了想試一把手的沖動了,只要你搞懂了上述的內容,上面的操作都可以輕而易舉的完成,沒有任何困難,還可以有更多的維度進行分析,不僅僅是SEO領域。只要你敢想,就能挖掘更多的數據出來(當然更復雜的維度可能需要學習shell更多的內容喲,當然,以我的努力程度之低都能做到的事情,大家應該都不是問題)。