如何获得文件中一行重复的平均次数?

时间:2009-11-27 13:40:21

标签: linux command-line

假设我有一个包含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脚本,但我想知道它是否可以用一个聪明的oneliner来完成。

2 个答案:

答案 0 :(得分:2)

在标准shell中我会这样做:

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

答案 1 :(得分:0)

又快又脏:

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

您可能需要先安装bc(进行浮点计算)。