首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >查找重复行之间的平均时间/距离

查找重复行之间的平均时间/距离
EN

Stack Overflow用户
提问于 2014-02-09 13:29:30
回答 1查看 41关注 0票数 0

我有一个文件,里面有成千上万行包含重复的内容。我想用行数来找出重复的平均时间/距离。

例如:(其中第一列是行号)

代码语言:javascript
复制
1 string1
2 string2
3 string2
4 string1
5 string3

将给出2(第一对重复之间的3行,第二重复之间的1行,除以2,因为有2个重复)。

对如何处理这件事有什么想法吗?

编辑

代码语言:javascript
复制
Starting test!
32-bit hash: 0x995D9A6E
32-bit hash: 0xA27B264D
32-bit hash: 0x856ED0A5
32-bit hash: 0x3B83614D
32-bit hash: 0x23D92F43
32-bit hash: 0xA1D0BE63
32-bit hash: 0xB0BF66B6
32-bit hash: 0x968F7074
32-bit hash: 0x76F75FD1
32-bit hash: 0x76A51358
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-02-09 14:17:14

您可以使用GNU awk做到这一点:

代码语言:javascript
复制
$ cat a.txt 
string1
string2
string2
string1
string3

$ cat test.awk
{
    if($0 in lines) {
        distance += NR - lines[$0];
        ++count;
    }
    else {
        lines[$0] = NR;
    }
}
END {
    print distance / count;
}

$ awk -f test.awk < a.txt 
2

以上给出了第一次出现的线与其他线之间的距离。如果希望在下一行的下一次出现与前一次发生之间有一个距离,请执行以下操作:

代码语言:javascript
复制
    # ...
    if($0 in lines) {
        distance += NR - lines[$0];
        lines[$0] = NR; # <--- add this
        ++count;
    }
    # ...
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21659608

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档