Linux 兩個檔案求交集 並集 差集

2021-09-13 03:41:55 字數 1995 閱讀 1126

一、交集

sort a.txt b.txt | uniq -d

comm -12 <(sort a.txt|uniq ) <(sort b.txt|uniq )

二、並集

sort a.txt b.txt | uniq

grep -f -f a.txt b.txt | sort | uniq

三、差集

a.txt-b.txt:

sort a.txt b.txt b.txt | uniq -u

b.txt - a.txt:

sort b.txt a.txt a.txt | uniq -u

grep -f -v -f a.txt b.txt | sort | uniq 不好使!!!

grep -f -v -f b.txt a.txt | sort | uniq 不好使!!!

第一行結果為b-a,所以為空;第二行為a-b

四、相關的解釋

使用sort可以將檔案進行排序(sort排序是為了管道交給uniq進行處理,uniq只能處理相鄰的行),可以使用sort後面的引數,例如 -n 按照數字格式排序,例如 -i 忽略大小寫,例如使用-r 為逆序輸出等

uniq為刪除檔案中重複的行,得到檔案中唯一的行,引數-d 表示的是輸出出現次數大於1的內容;引數-u表示的是輸出出現次數為1的內容;那麼對於上述的求交集並集差集的命令做如下的解釋:

sort a.txt b.txt | uniq -d:將兩個檔案進行排序,uniq使得兩個檔案中的內容為唯一的,使用-d輸出兩個檔案中次數大於1的內容,即是得到交集

sort a.txt b.txt | uniq :將兩個檔案進行排序,uniq使得兩個檔案中的內容為唯一的,即可得到兩個檔案的並集

sort a.txt b.txt b.txt | uniq -u:將兩個檔案排序,最後輸出a.txt b.txt b.txt檔案中只出現過一次的內容,因為有兩個b.txt所以只會輸出只在a.txt出現過一次的內容(b.txt的內容至少出現兩次),即是a.txt-b.txt差集;對於b.txt-a.txt同理。

樣例[root(0)@thatsit 11:40:46 ~/scripts]# cat a.hosts

10.10.1.101

10.10.1.102

10.10.1.103

10.10.1.104

[root(0)@thatsit 11:40:47 ~/scripts]#

[root(0)@thatsit 11:40:48 ~/scripts]# cat b.hosts

10.10.1.101

10.10.1.103

10.10.1.105

[root(0)@thatsit 11:40:49 ~/scripts]#

[root(0)@thatsit 11:40:49 ~/scripts]# sort a.hosts b.hosts | uniq -d

10.10.1.101

10.10.1.103

[root(0)@thatsit 11:41:08 ~/scripts]#

[root(0)@thatsit 11:41:10 ~/scripts]# sort a.hosts b.hosts | uniq

10.10.1.101

10.10.1.102

10.10.1.103

10.10.1.104

10.10.1.105

[root(0)@thatsit 11:41:19 ~/scripts]#

[root(0)@thatsit 11:41:25 ~/scripts]# sort a.hosts b.hosts b.hosts | uniq -u

10.10.1.102

10.10.1.104

[root(0)@thatsit 11:41:45 ~/scripts]#

[root(0)@thatsit 11:41:47 ~/scripts]# sort a.hosts a.hosts b.hosts | uniq -u

10.10.1.105

Linux 兩個檔案求交集 並集 差集

sort a.txt b.txt uniq dsort a.txt b.txt uniq在 a.txt 檔案 現,不在 b.txt 檔案 現 sort a.txt b.txt b.txt uniq u在 b.txt 檔案 現,不在 a.txt 檔案 現 sort b.txt a.txt a.txt ...

Linux 兩個檔案求交集 並集 差集

一 交集 sort a.txt b.txt uniq d 二 並集 sort a.txt b.txt uniq 三 差集 a.txt b.txt sort a.txt b.txt b.txt uniq u b.txt a.txt sort b.txt a.txt a.txt uniq u 四 相關的...

Linux 兩個檔案求交集 並集 差集

sort a.txt b.txt uniq d sort a.txt b.txt uniq a.txt b.txt sort a.txt b.txt b.txt uniq u b.txt a.txt sort b.txt a.txt a.txt uniq u 使用sort可以將檔案進行排序,可以使用...