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