comm命令

发布于 2023-08-10  2007 次阅读


简介

按行比较两个已排序的文件。

选项

无选项时输出三列,第一列为FILE1独有的行,第二列为FILE2独有的行,第三列为FILE1,FILE2共有的行。
-1 不输出第一列。
-2 不输出第二列。
-3 不输出第三列。
--check-order 检查输入行是否正确的排序,即使它们确实是已排序过的。
--nocheck-order 不检查输入行是否正确的排序。
--output-delimiter=STR 使用STR作为输出列之间的分隔符而不是默认的TAB。
--total 额外地增加第四列输出概要。
-z, --zero-terminated 设置行终止符为NUL(空),而不是换行符。
--help 显示帮助信息并退出。
--version 显示版本信息并退出。

例子

[root@test tmp]#cat aaa.txt 
aaa
bbb
ccc
ddd
eee
111
222
[root@test tmp]#cat bbb.txt 
bbb
ccc
aaa
hhh
ttt
jjj

#将文件内容排序进行比较

[root@test tmp]#sort aaa.txt  >> a.txt
[root@test tmp]#sort bbb.txt  >> b.txt

[root@test tmp]#cat a.txt 
111
222
aaa
bbb
ccc
ddd
eee
[root@test tmp]#cat b.txt 
aaa
bbb
ccc
hhh
jjj
ttt
#第一列只出现在a.txt中 第二列只出现在b.txt中 第三列两文件中的共同行
[root@test tmp]#comm --nocheck-order  a.txt b.txt
111
222
        aaa
        bbb
        ccc
ddd
eee
    hhh
    jjj
    ttt
#不显示只在a.txt出现的行、不显示只在b.txt出现的行;只显示共同出现的行
[root@test tmp]#comm --nocheck-order -12 a.txt b.txt
aaa
bbb
ccc
#不显示只在a.txt出现的行、不显示a b两文件出现的共同行;只显示在b.txt出现的行
[root@test tmp]#comm --nocheck-order -13 a.txt b.txt
hhh
jjj
ttt
#不显示只在b.txt出现的行、不显示a b两文件出现的共同行;只显示在a.txt出现的行
[root@test tmp]#comm --nocheck-order -23 a.txt b.txt
111
222
ddd
eee
还记得妞妞吗
最后更新于 2023-08-10