因此,我正在嘗試製作一個awk腳本,以最高三的順序決定最高命中率。我關閉這個基於Apache的Web日誌,看起來像通過awk獲得三個最高網站擊球手
192.168.198.92 - - [22/Dec/2002:23:08:37 -0400] "GET /HTTP/1.1" 200 6394 www.yahoo.com "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1...)" "-"
192.168.198.92 - - [22/Dec/2002:23:08:38 -0400] "GET /images/logo.gif HTTP/1.1" 200 807 www.yahoo.com "http://www.some.com/" "Mozilla/4.0 (compatible; MSIE 6...)" "-"
192.168.72.177 - - [22/Dec/2002:23:32:14 -0400] "GET /news/sports.html HTTP/1.1" 200 3500 www.yahoo.com "http://www.some.com/" "Mozilla/4.0 (compatible; MSIE ...)" "-"
192.168.72.177 - - [22/Dec/2002:23:32:14 -0400] "GET /favicon.ico HTTP/1.1" 404 1997 www.yahoo.com "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; rv:1.7.3)..." "-"
192.168.72.177 - - [22/Dec/2002:23:32:15 -0400] "GET /style.css HTTP/1.1" 200 4138 www.yahoo.com "http://www.yahoo.com/index.html" "Mozilla/5.0 (Windows..." "-"
192.168.72.177 - - [22/Dec/2002:23:32:16 -0400] "GET /js/ads.js HTTP/1.1" 200 10229 www.yahoo.com "http://www.search.com/index.html" "Mozilla/5.0 (Windows..." "-"
192.168.72.177 - - [22/Dec/2002:23:32:19 -0400] "GET /search.php HTTP/1.1" 400 1997 www.yahoo.com "-" "Mozilla/4.0 JJohnJoJJJJJoJJoJJJJJoJJohJJJJJJJJJJJJohnJohJoJoJJJoJJ
要做到這一點做的我做的:
$1 ~ /[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}/ {
hitCounter[$1]++
notIndexed=1
for(i in ips) {
if (i==$1) { notIndexed=0 }
}
if(notIndexed==1) {
ips[indexx]=$1
indexx++
}
}
這條線檢測IP,然後在「隱私權|發佈廣告遞增命中計數爲它「由IPs索引的數組。在此之後,我檢查ips的列表,「ips」,看看命中的IP是否已經在那裏。如果沒有將IP添加到「ips」數組,並且索引計數增加1。理論上,通過這樣做,「ips」中的每個索引都應與「hitCounter」中的索引相關聯。最後,我有...
END {
indexxx=0
for (i in hitCounter) {
if (i>hitCounter[firstIP])
firstIP=ips[indexxx]
else if (i>hitCounter[secondIP])
secondIP=ips[indexxx]
else
thirdIP=ips[indexxx]
indexxx++
}
}
正是在這裏,我走在「隱私權|發佈廣告」通過IP命中計數,在三個高命中變量比較他們的命中和,如果IP命中是大於一個在三個高命中變量內容中,我將其設置爲當前IP。
這看起來應該對我有用,我應該得到「192.168.72.177 192.168.198.92」作爲輸出,而是我得到「192.168.198.92 192.168.198.92」。
爲什麼?
編輯:對不起,我這是怎麼打印爲「隱私權|發佈廣告」 foreach循環之後放置最後的結果......
print "The most hits were from "firstIP" "secondIP" "thirdIP
我沒有看到任何'print'語句。請發佈您的腳本的更完整版本。順便說一下,可以重用變量 - 不需要'indexxx'。 –
你真的不應該爲'favicon.ico'上的404響應代碼計算點擊次數。此外,多個相關的提取不是單獨的提示。如果有人訪問一個頁面有四個圖像,一個級聯樣式表和一個favicon,這不是五個命中! – Kaz
請參閱我編輯的答案,它有一個由Jonathan Leffler指出的解決方法。 –