linux 中 comm命令的用法

1、测试数据

复制代码
root@ubuntu01:/home/test# ls
a.txt  b.txt
root@ubuntu01:/home/test# cat a.txt
sss
eee
rrr
555
888
333
bbb
777
yyy
root@ubuntu01:/home/test# cat b.txt
yyy
ddd
sss
eee
666
kkk
mmm
jjj
复制代码

 

2、使用comm命令前需要对文件进行排序和去重复

复制代码
root@ubuntu01:/home/test# ls
a.txt  b.txt
root@ubuntu01:/home/test# cat a.txt
sss
eee
rrr
555
888
333
bbb
777
yyy
root@ubuntu01:/home/test# cat b.txt
yyy
ddd
sss
eee
666
kkk
mmm
jjj
root@ubuntu01:/home/test# sort -u a.txt > a && mv a a.txt   ## 排序去重复
root@ubuntu01:/home/test# sort -u b.txt > a && mv a b.txt
root@ubuntu01:/home/test# cat a.txt
333
555
777
888
bbb
eee
rrr
sss
yyy
root@ubuntu01:/home/test# cat b.txt
666
ddd
eee
jjj
kkk
mmm
sss
yyy
复制代码

 

3、comm命令用法:comm file1 file2

一共生成三列数据:第一列:file1中特有的、 第二列:file2中特有的、  第三列:file1和file2中共有的

复制代码
root@ubuntu01:/home/test# ls
a.txt  b.txt
root@ubuntu01:/home/test# cat a.txt
333
555
777
888
bbb
eee
rrr
sss
yyy
root@ubuntu01:/home/test# cat b.txt
666
ddd
eee
jjj
kkk
mmm
sss
yyy
root@ubuntu01:/home/test# comm a.txt b.txt  ## 第一列a.txt中特有的; 第二列b.txt中特有的;  第三列a.txt和b.txt中共有的
333
555
        666
777
888
bbb
        ddd
                eee
        jjj
        kkk
        mmm
rrr
                sss
                yyy
复制代码

 

 

4、取两者交集

复制代码
root@ubuntu01:/home/test# ls
a.txt  b.txt
root@ubuntu01:/home/test# cat a.txt
333
555
777
888
bbb
eee
rrr
sss
yyy
root@ubuntu01:/home/test# cat b.txt
666
ddd
eee
jjj
kkk
mmm
sss
yyy
root@ubuntu01:/home/test# comm a.txt b.txt
333
555
        666
777
888
bbb
        ddd
                eee
        jjj
        kkk
        mmm
rrr
                sss
                yyy
root@ubuntu01:/home/test# comm a.txt b.txt -1 -2  ## 两者交集
eee
sss
yyy
复制代码

 

5、取两者并集

复制代码
root@ubuntu01:/home/test# ls
a.txt  b.txt
root@ubuntu01:/home/test# cat a.txt
333
555
777
888
bbb
eee
rrr
sss
yyy
root@ubuntu01:/home/test# cat b.txt
666
ddd
eee
jjj
kkk
mmm
sss
yyy
root@ubuntu01:/home/test# comm a.txt b.txt
333
555
        666
777
888
bbb
        ddd
                eee
        jjj
        kkk
        mmm
rrr
                sss
                yyy
root@ubuntu01:/home/test# comm a.txt b.txt | sed 's/^[\t ]*//g'   ## 取两者并集
333
555
666
777
888
bbb
ddd
eee
jjj
kkk
mmm
rrr
sss
yyy
复制代码

 

6、取a.txt中特有内容

复制代码
root@ubuntu01:/home/test# ls
a.txt  b.txt
root@ubuntu01:/home/test# cat a.txt
333
555
777
888
bbb
eee
rrr
sss
yyy
root@ubuntu01:/home/test# cat b.txt
666
ddd
eee
jjj
kkk
mmm
sss
yyy
root@ubuntu01:/home/test# comm a.txt b.txt
333
555
        666
777
888
bbb
        ddd
                eee
        jjj
        kkk
        mmm
rrr
                sss
                yyy
root@ubuntu01:/home/test# comm a.txt b.txt -2 -3   ## 取a.txt中特有的
333
555
777
888
bbb
rrr
复制代码

 

7、取b.txt中特有的

复制代码
root@ubuntu01:/home/test# ls
a.txt  b.txt
root@ubuntu01:/home/test# cat a.txt
333
555
777
888
bbb
eee
rrr
sss
yyy
root@ubuntu01:/home/test# cat b.txt
666
ddd
eee
jjj
kkk
mmm
sss
yyy
root@ubuntu01:/home/test# comm a.txt b.txt
333
555
        666
777
888
bbb
        ddd
                eee
        jjj
        kkk
        mmm
rrr
                sss
                yyy
root@ubuntu01:/home/test# comm a.txt b.txt -1 -3    ## 取b.txt的特有项
666
ddd
jjj
kkk
mmm
复制代码

 

8、取a.txt和b.txt特有项的合集

复制代码
root@ubuntu01:/home/test# ls
a.txt  b.txt
root@ubuntu01:/home/test# cat a.txt
333
555
777
888
bbb
eee
rrr
sss
yyy
root@ubuntu01:/home/test# cat b.txt
666
ddd
eee
jjj
kkk
mmm
sss
yyy
root@ubuntu01:/home/test# comm a.txt b.txt
333
555
        666
777
888
bbb
        ddd
                eee
        jjj
        kkk
        mmm
rrr
                sss
                yyy
root@ubuntu01:/home/test# comm a.txt b.txt -3 | sed 's/^[\t ]*//g'    ## 取两个文件特有项的合集
333
555
666
777
888
bbb
ddd
jjj
kkk
mmm
rrr
复制代码

 

posted @   小鲨鱼2018  阅读(1161)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
历史上的今天:
2021-03-26 6-11
点击右上角即可分享
微信分享提示