第二十二章 Linux文件比較,文本文件的交集、差集與求差:comm命令

第二十二章 Linux文件比較,文本文件的交集、差集與求差:comm命令

名詞解釋

comm 命令 能夠用於兩個文件之間的比較,它有一些選項能夠用來調整輸出,以便執行交集、求差、差集操做。ide

交集:打印兩個文件所共有的行code

求差:打印出指定文件所包含的其不相同的行。it

差集:打印出包含在一個文件中,但不包含在其餘指定文件中的行。class

語法

comm(選項)(參數)

選項

  • -1 :不顯示在第一個文件出現的內容;sed

  • -2 :不顯示在第二個文件中出現的內容;file

  • -3 :不顯示同時在兩個文件中都出現的內容。語法

參數

  • 文件1 :指定要比較的第一個有序文件sort

  • 文件2 :指定要比較的第二個有序文件di

實例

[root@ceshi comm]# cat aaa.txt 
aaa
bbb
ccc
ddd
eee
111
222
[root@ceshi comm]# cat bbb.txt 
bbb
ccc
aaa
hhh
ttt
jjj
[root@ceshi comm]# comm aaa.txt bbb.txt 
aaa
                bbb
                ccc
comm: file 2 is not in sorted order
        aaa
ddd
eee
comm: file 1 is not in sorted order
111
222
        hhh
        ttt
        jjj

輸出第一列:表明aaa.txt包含的內容文件

輸出第二列:表明bbb.txt包含的內容

輸出第三列:表明在aaa.txt和bbb.txt中相同的行。各列是以製表符(\t)做爲定界符。

file 1 is not in sorted order :意思是文件裏邊的內容不是按順序排列的。沒有用關係。

交集:

打印兩個文件的交集,須要刪除第一列和第二列:

[root@ceshi comm]# comm aaa.txt bbb.txt -1 -2
bbb
ccc

求差:

打印出兩個文件中不相同的行,須要刪除第三列:

[root@ceshi comm]#  comm aaa.txt bbb.txt -3
aaa
        aaa
ddd
eee
111
222
        hhh
        ttt
        jjj
[root@ceshi comm]#  comm aaa.txt bbb.txt -3 | sed 's/^\t//'
comm: file 2 is not in sorted order
comm: file 1 is not in sorted order
aaa
aaa
ddd
eee
111
222
hhh
ttt
jjj

sed ‘s/^\t//’ 是將製表符(\t)刪除,以便把兩列合併成一列。

差集:

經過刪除不須要的列,能夠獲得aaa.txt和bbb.txt的差集:

aaa.txt的差集

[root@ceshi comm]# comm aaa.txt bbb.txt -2 -3
aaa
ddd
eee
111
222

bbb.txt的差集

[root@ceshi comm]# comm aaa.txt bbb.txt -1 -3   
aaa
hhh
ttt
jjj
相關文章
相關標籤/搜索