shell/bash 交集、並集、差集

方法一(直接用文件名):取兩個文本文件的並、交、差集
並:ide


sort -m <(sort file1 | uniq) <(sort file2 | uniq) | uniqspa


交:orm


sort -m <(sort file1 | uniq) <(sort file2 | uniq) | uniq -d排序


file1 - file2:ci


sort -m <(sort file1 | uniq) <(sort file2 | uniq) <(sort file2 | uniq) | uniq -uit

 

 

方法二(用變量參數):取兩個文本文件的並、交、差集
class

file1=XXXX變量

file2=YYYYfile


# 並:搜索


sort -m <(sort $file1 | uniq) <(sort $file2 | uniq) | uniq


# 交:


sort -m <(sort $file1 | uniq) <(sort $file2 | uniq) | uniq -d


# file1 - file2:


sort -m <(sort $file1 | uniq) <(sort $file2 | uniq) <(sort $file2 | uniq) | uniq -u

 

方法三:

file1=XXXX

file2=YYYY

# 並:

cat $file1 $file2 | sort | uniq

# 交:

cat $file1 $file2 | sort | uniq -d

 

 

備註:

uniq -d 會輸出重複行

uniq -u 只顯示惟一的行



grep命令

grep命令是經常使用來搜索文本內容的,根據輸入的pattern,輸出命中的內容。能夠利用它的文件輸入pattern特性,來求兩個文件的交集。


$ 
c
d
e

那差集能夠利用-v這個參數,例如:

$ grep -F -v -f a.file b.file
f
g

$ grep -F -v -f b.file a.file
a
b

其中第一個命令求B-A,第二個命令求A-B

注意:

1)grep求交集不要求輸入文件是排序的,但最好是惟一的


2)差集時注意輸入文件的順序

相關文章
相關標籤/搜索