美文网首页linux问题linux命令
linux下用sort和uniq求两个文件的并集差集和交集

linux下用sort和uniq求两个文件的并集差集和交集

作者: 陆_志东 | 来源:发表于2018-08-28 09:56 被阅读0次

    准备数据

    注意:如果你得到的结果并不是想要的结果,那么有可能是你的文件中出现了空格,导致uniq认为不是重复的数据
    比如有两个文件

    out1.txt
    1
    2
    3
    4
    5
    
    out2.txt
    1
    3
    5
    7
    9
    

    求两个文件的交集

    >>sort out1.txt out2.txt | uniq -d  # -d 输出重复的行, 需要注意一个问题,那就是这两个文件,在各自的文件中不要出现重复的数据
    1
    3
    5
    

    求两个文件的并集

    >>sort out1.txt out2.txt | uniq   # uniq不加参数意思是去掉多余重复的数据,保留一条唯一的
    1
    2
    3
    4
    5
    7
    9
    

    求两个文件的差集

    out1.txt-out2.txt
    >>sort out1.txt out2.txt out2.txt | uniq -u
    2
    4
    讲解sort out1.txt out2.txt out2.txt 会让out2.txt的所有内容都出现两次,所以uniq -u 之后不会出现 out2.txt 里面的内容,
    而out1.txt和out2.txt重复的内容会至少出现3次以上,也不会输出到结果中.
    所以最终结果一定是out1.txt在out2.txt中没有出现过的数据,也就是out1.txt-out2.txt的差集
    
    out2.txt - out1.txt
    >> sort out1.txt out1.txt out2.txt | uniq -u
    7
    9
    原理请看上面的out1.txt-out2.txt的讲解,原理是一样的
    

    相关文章

      网友评论

        本文标题:linux下用sort和uniq求两个文件的并集差集和交集

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