美文网首页
bash技巧:求集合的交集、并集、差集、对称差集

bash技巧:求集合的交集、并集、差集、对称差集

作者: 予早 | 来源:发表于2017-11-26 11:31 被阅读0次

    网上转的,不错,比使用awk容易点

    给定两个文件 a.txt 和 b.txt ,每行是一个记录(假设没有重复),要求输出两集合的交集、并集、差集,输出的结果只包括唯一项。交集定义为同时出现在两个文件中的记录项,并集定义为出现在任何一个文件中的记录项,差集(A-B)定义为出现在A中而且不出现在B中的记录,对称差集定义为只出现在一个文件中的记录。

    假设 a.txt 包括 a, c, b 三行。假设 b.txt 包括 d, e, c, b 四行。

    交集,把两个文件放到一起排序,只输出次数多于一次的项:
    $ sort a.txt b.txt | uniq -d
    b
    c

    并集,把两个文件放到一起排序,重复的项只算一次:
    $ sort a.txt b.txt | uniq
    a
    b
    c
    d
    e

    差集(A-B),把B的元素重复2份和A的元素放到一起排序,只输出出现一次的项:
    $ sort a.txt b.txt b.txt | uniq -u
    a

    对称差,把两个文件放到一起排序,只输出出现一次的项:
    $ sort a.txt b.txt | uniq -u
    a
    d
    e

    相关文章

      网友评论

          本文标题:bash技巧:求集合的交集、并集、差集、对称差集

          本文链接:https://www.haomeiwen.com/subject/zedkbxtx.html