第二十二章 Linux文件比較,文本文件的交集、差集與求差:comm命令
阿新 • • 發佈:2018-07-26
調整 得到 指定 顯示 兩個文件 not in 通過 需要 選項 第二十二章 Linux文件比較,文本文件的交集、差集與求差:comm命令
名詞解釋
comm 命令
可以用於兩個文件之間的比較,它有一些選項可以用來調整輸出,以便執行交集、求差、差集操作。
交集:打印兩個文件所共有的行
求差:打印出指定文件所包含的其不相同的行。
差集:打印出包含在一個文件中,但不包含在其他指定文件中的行。
語法
comm(選項)(參數)
選項
-
-1 :不顯示在第一個文件出現的內容;
-
-2 :不顯示在第二個文件中出現的內容;
-
-3 :不顯示同時在兩個文件中都出現的內容。
?
參數
-
文件1 :指定要比較的第一個有序文件
-
文件2 :指定要比較的第二個有序文件
?
實例
[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
第二十二章 Linux文件比較,文本文件的交集、差集與求差:comm命令