码迷,mamicode.com
首页 > 系统相关 > 详细

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

时间:2018-07-26 16:42:54      阅读:891      评论:0      收藏:0      [点我收藏+]

标签:order   解释   aaa   文本   实例   排列   linu   linux文件   comm   

第二十二章 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命令

标签:order   解释   aaa   文本   实例   排列   linu   linux文件   comm   

原文地址:http://blog.51cto.com/506554897/2150561

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!