2009-11-27 51 views
0

假設我有五行與IP地址的文件:如何獲得文件中某行重複的平均次數?

1.2.3.4 
5.6.7.8 
5.6.7.8 
9.9.9.9 
5.6.7.8 

我需要找到的是時間連續地重複每一個IP的平均數。在這個例子中,相同IP的每個序列的長度都是1,5.6.7.8除外,重複兩次。所以,對於這個例子,答案是(1 + 2 + 1 + 1)/ 4 = 1.25。

我試圖弄清楚,在放棄或意識到他們應該對頁面上方的Firefox插件安裝警告做出反應之前,用戶平均點擊了我網站上的下載按鈕多少次。

這可以在命令行中完成,或者我必須編寫腳本來完成它嗎?我很滿意爲它寫了一個ruby腳本,但我想知道它是否可以通過智能綁定來完成。

+0

是在某處的.txt文件中寫入的ip地址?如果是這樣,以什麼格式? – Pieter888 2009-11-27 13:45:46

+0

這是我用Apache的access.log創建的一個文本文件。每行一個IP,1005行。 – 2009-11-27 13:47:19

回答

2

在標準的外殼,我會做這樣的:

uniq -c intputfile | awk '{count++;sum+=$1} END{print count,"lines.","Average is:",sum/count}' 
+0

謝謝! uniq -c正是我所不知道的 – 2009-11-27 13:53:49

+0

非常好:) +1 – jkp 2009-11-27 13:55:17

0

快速和骯髒的:

echo `cat test.txt | wc -l`/`uniq test.txt | wc -l` | bc -l 

這是可能的,你需要安裝bc第一(做浮點運算)。