zoukankan      html  css  js  c++  java
  • 两个文件比较之comm命令

    comm命令可用于两个文件之间的比较。它有很多不错的选项可用来调整输出,以便我们执
    行交集、求差(difference)以及差集操作。
     交集:打印出两个文件所共有的行。
     求差:打印出指定文件所包含的且互不相同的那些行。
     差集:打印出包含在文件a中,但不包含在其他指定文件中的那些行。

    假设现在有两个文件a和b,内容分别是:a(1,2,3),b(3,4,5)。那么,对这两个文件进行操作的结果如下。
    交集:3。
    求差:1,2,4,5。
    差集(a):1,2。

    需要注意的是comm必须使用排过序的文件作为输入。请看看下面的例子:

    [root@host1 shell]# echo -e "1
    3
    8
    2" > a.txt
    [root@host1 shell]# cat a.txt 
    1
    3
    8
    2
    [root@host1 shell]# echo -e "1
    5
    7
    2" > b.txt
    [root@host1 shell]# cat b.txt 
    1
    5
    7
    2
    [root@host1 shell]# sort a.txt  -o a.txt ; sort b.txt -o b.txt

    (1) 首先执行不带任何选项的comm:

    [root@host1 shell]# comm a.txt b.txt 
            1
            2
    3
        5
        7
    8

    输出的第一列包含只在a.txt中出现的行(a的差集),第二列包含只在b.txt中出现的行(b的差集),第三列
    包含a.txt和b.txt中相同的行(交集)。各列以制表符( )作为定界符。

    (2) 为了打印两个文件的交集,我们需要删除第一列和第二列,只打印出第三列:

    [root@host1 shell]# comm -1 -2 a.txt b.txt 
    1
    2

    (3) 打印出两个文件中不相同的行:

    [root@host1 shell]# comm -3 a.txt b.txt 
    3
        5
        7
    8

    在这次的输出中,那些唯一出现的行使得列中出现了空白字段。所以这两列在同一
    行上不会同时都出现内容。为了提高输出结果的可用性,需要删除空白字段,将两
    列合并成一列:

    3
    5
    7
    8

    (4) 要生成规范的输出,得使用下面的命令:

    [root@host1 shell]# comm -3 a.txt b.txt | sed 's/^	//'
    3
    5
    7
    8

    (5) 通过删除不需要的列,我们就可以分别得到a.txt和b.txt的差集。
    a.txt的差集
    $ comm a.txt b.txt -2 -3
    -2 -3 删除第二列和第三列。
    b.txt的差集
    $ comm a.txt b.txt -1 -3
    -1 -3 删除第一列和第三列。

    工作原理:

    comm的命令行选项可以按照需求对输出进行格式化,例如:
     -1 从输出中删除第一列;
     -2 从输出中删除第二列;
     -3 从输出中删除第三列。
      在生成统一输出时,sed命令通过管道获取comm的输出。它删除行首的 字符。sed中的s
    表示替换(substitute)。/^ / 匹配行前的 (^是行首标记)。//(两个/操作符之间没有任何
    字符)是用来替换行首的 的字符串。如此一来,就删除了所有行首的 。
      差集操作允许你比较两个文件,打印出只在a.txt或b.txt中出现的行。当a.txt和b.txt作为comm
    命令的参数时,输出中的第一列是a.txt相对于b.txt的差集,第二列是b.txt相对于a.txt的差集。

  • 相关阅读:
    企业要主动淘汰五种人
    人力管理的核心:选、用、育、留
    张瑞敏:正确路线确定后,干部就是决定因素
    西点军校如何培养学员
    董事长如何找合适的搭档
    企业家何时应该放权
    会计基础视频
    同样劳动,为何结果不同?
    什么是真正的工作到位
    中国的人口和经济周期
  • 原文地址:https://www.cnblogs.com/01-single/p/6950645.html
Copyright © 2011-2022 走看看