【问题标题】:intersection with multiple files与多个文件相交
【发布时间】:2014-02-21 19:14:41
【问题描述】:

我有 4 个文本文件,其中每个文件都有一列数据(每个文件中约 2000 行)。我想做的是比较所有文件,并确定不同文件之间的重叠是什么。所以,我想知道 file1 中有什么,其他 3 个文件没有,file2 中有什么,其他 3 个没有,file1 和 file2 有什么,等等。最终目标是用4 个重叠圆圈显示文件之间的各种重叠。

我一直在绞尽脑汁想弄清楚如何做到这一点。我一直在使用 comm 和 diff 命令,但在处理所有文件时遇到了麻烦。有人对如何做到这一点有任何建议吗?

感谢您的任何帮助或建议。

【问题讨论】:

    标签: diff intersection comm


    【解决方案1】:

    假设有 4 个文件名为 a b c d

    存在于文件 a 但不存在于其他任何文件中的行(我假设 ^ 是一个未在任何文件中使用的字符):

    for l in `cat a | sort | uniq`;do echo $l^`grep -c $l b c d`;done | grep 'b:0 c:0 d:0$' | cut -d\^ -f1
    

    所有这些都存在的行:

    for l in `cat a | sort | uniq`;do echo $l^`grep -c $l b c d`;done | grep 'b:[1-9]* c:[1-9]* d:[1-9]*$' | cut -d\^ -f1
    

    ...

    【讨论】:

      猜你喜欢
      • 2012-05-09
      • 1970-01-01
      • 1970-01-01
      • 2021-07-02
      • 2021-01-10
      • 1970-01-01
      • 1970-01-01
      • 2018-07-16
      • 1970-01-01
      相关资源
      最近更新 更多