bash技巧:求集合的交集、并集、差集、對(duì)稱差集

網(wǎng)上轉(zhuǎn)的,不錯(cuò),比使用awk容易點(diǎn)

給定兩個(gè)文件 a.txt 和 b.txt ,每行是一個(gè)記錄(假設(shè)沒有重復(fù)),要求輸出兩集合的交集、并集、差集,輸出的結(jié)果只包括唯一項(xiàng)。交集定義為同時(shí)出現(xiàn)在兩個(gè)文件中的記錄項(xiàng),并集定義為出現(xiàn)在任何一個(gè)文件中的記錄項(xiàng),差集(A-B)定義為出現(xiàn)在A中而且不出現(xiàn)在B中的記錄,對(duì)稱差集定義為只出現(xiàn)在一個(gè)文件中的記錄。

假設(shè) a.txt 包括 a, c, b 三行。假設(shè) b.txt 包括 d, e, c, b 四行。

交集,把兩個(gè)文件放到一起排序,只輸出次數(shù)多于一次的項(xiàng):
$ sort a.txt b.txt | uniq -d
b
c

并集,把兩個(gè)文件放到一起排序,重復(fù)的項(xiàng)只算一次:
$ sort a.txt b.txt | uniq
a
b
c
d
e

差集(A-B),把B的元素重復(fù)2份和A的元素放到一起排序,只輸出出現(xiàn)一次的項(xiàng):
$ sort a.txt b.txt b.txt | uniq -u
a

對(duì)稱差,把兩個(gè)文件放到一起排序,只輸出出現(xiàn)一次的項(xiàng):
$ sort a.txt b.txt | uniq -u
a
d
e

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 問題描述 對(duì)于兩個(gè)同處在一個(gè)集群的hive表,進(jìn)行文件或者數(shù)據(jù)的對(duì)比是非常方便的,直接寫個(gè)關(guān)聯(lián)查詢就可以搞定。然而...
    那只媛閱讀 7,243評(píng)論 0 5
  • 基礎(chǔ)命令 主要的命令和快捷鍵 Linux系統(tǒng)命令由三部分組成:cmd + [options]+[operation...
    485b1aca799e閱讀 1,221評(píng)論 0 0
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法,類相關(guān)的語(yǔ)法,內(nèi)部類的語(yǔ)法,繼承相關(guān)的語(yǔ)法,異常的語(yǔ)法,線程的語(yǔ)...
    子非魚_t_閱讀 34,734評(píng)論 18 399
  • 第1章 小試牛刀 $ 是普通用戶,# 表示管理員用戶 root。 shebang:#!。sharp / hash ...
    巴喬書摘閱讀 6,670評(píng)論 1 4
  • linux資料總章2.1 1.0寫的不好抱歉 但是2.0已經(jīng)改了很多 但是錯(cuò)誤還是無(wú)法避免 以后資料會(huì)慢慢更新 大...
    數(shù)據(jù)革命閱讀 13,258評(píng)論 2 33

友情鏈接更多精彩內(nèi)容