代码之家  ›  专栏  ›  技术社区  ›  Evgeny Shadchnev

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

  •  0
  • Evgeny Shadchnev  · 技术社区  · 15 年前

    假设我有一个包含五行IP地址的文件:

    1.2.3.4
    5.6.7.8
    5.6.7.8
    9.9.9.9
    5.6.7.8
    

    我需要找到每个IP连续重复的平均次数。在本例中,除5.6.7.8外,相同IP的每个序列的长度为1,重复两次。因此,对于这个例子,答案是(1+2+1+1)/4=1.25。

    我试图弄清楚,在用户放弃或意识到他们应该对页面上方的firefox addon安装警告做出反应之前,他们平均点击了我网站上的下载按钮多少次。

    这可以在命令行中完成,还是必须编写一个脚本来完成?我可以为它编写一个Ruby脚本,但我想知道是否可以用一个智能的OneLiner来完成。

    2 回复  |  直到 15 年前
        1
  •  2
  •   Sec    15 年前

    在标准shell中,我会这样做:

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

    快速和肮脏:

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

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