前言

我们经常会有需求比较一个文件里的内容是否在另一个文件存在。假如我有一份监控列表的IP写入在了file1,我所有的机器IP写入在了file2,我要找出还有哪些机器没有在监控列表。以前的做法是写个两层循环,或者用diff命令。打印出来也没那么直观,直到最近找打了comm,以前也知道这个小工具,可能是没有静心去看他之类的,总感觉搞不明白。最近几天类似的比较需求有点多,还是决定用它,也就有了自己的总结。
 

目录

1、comm的功能
2、用法
3、输出格式
4、参数
5、例子
6、写在最后
 

1、功能

用于比较两个已经排过序的文件。这里一定要注意是两个文件都要已经排序了,没有排序的话,打印出来的结果是不一样的。
 

2、用法

comm [-123] file1 file2

3、输出

用comm命令比较出来后,一共会有3列的显示,其中的代表的含义如下:
第一列:显示仅在第一个文件有的行。
第二列:显示仅在第二个文件有的行。
第三列:显示在文件1和文件2都有的行。
 

4、参数

在用comm命令时,可以使用-1、-2、-3、-12、-13、-23等参数,其中这些参数的含义如下:
-1:不显示在第一个文件中独有的行
-2:不显示在第二个文件中独有的行
-3:不显示两个文件中共有的行
 
可以把“-”理解为减号,-1就是输出时不打印第一列;-2就是不打印第二列,只打印第1列和第3列。
 

5、实例

file1:
aa
dd
bb
cc
ff
 
file2:
nn
oo
aa
 
从这里可以看出,第三列并没有把在两个文件中都有的行打印出来。这是因为在使用comm命令时,一定要先对文件做sort排序。
C02D37BHMD6T:~ lli$ comm file1 file2
aa
dd
bb
cc
ff
nn
oo
aa
经过对文件排序后的对比
C02D37BHMD6T:~ lli$ cat file1 |sort > file3
C02D37BHMD6T:~ lli$ cat file2 |sort > file4
第一列可以看出是file3文件独有的,第二列为file4独有的,第三列为两个文件共有的。
C02D37BHMD6T:~ lli$ comm file3 file4
aa
bb
cc
dd
ff
nn
oo

六、写在最后

李先生(Lemon),高级运维工程师(自称),SRE专家(目标),梦想在35岁买一辆保时捷。喜欢钻研底层技术,认为底层基础才是王道。一切新技术都离不开操作系统(CPU、内存、磁盘)、网络等。坚持输入输出,记录自己学习的点滴,在平凡中坚持前行,总有一天会遇见不一样的自己。公众号:运维汪(ID:Leeeee_Li)。

欢迎大家关注我的公众号,一起交流、学习。

 

小公举comm,快速比较两个排序文件的更多相关文章

  1. SQLSERVER中如何快速比较两张表的不一样

    SQLSERVER中如何快速比较两张表的不一样 不知不觉要写2014年的最后一篇博文了~ 一般来说,如何检测两张表的内容是否一致,体现在复制的时候发布端和订阅端的两端的数据上面 我这里罗列了一些如何从 ...

  2. c#封装DBHelper类 c# 图片加水印 (摘)C#生成随机数的三种方法 使用LINQ、Lambda 表达式 、委托快速比较两个集合,找出需要新增、修改、删除的对象 c# 制作正方形图片 JavaScript 事件循环及异步原理(完全指北)

    c#封装DBHelper类   public enum EffentNextType { /// <summary> /// 对其他语句无任何影响 /// </summary> ...

  3. linux:使用comm命令比较两个文件:交集、差

    linux:使用comm命令比较两个文件:交集.差 comm命令可以按行比较两个排序好的文件,输出有3列:第一列是file1独有的.第二列是file2独有的,第三列是两者都有的,简单语法如下:NAME ...

  4. 剑指Offer面试题:16.合并两个排序的链表

    PS:这也是一道出镜率极高的面试题,我相信很多童鞋都会很眼熟,就像于千万人之中遇见不期而遇的人,没有别的话可说,唯有轻轻地问一声:“哦,原来你也在这里? ” 一.题目:合并两个排序的链表 题目:输入两 ...

  5. 2.Median of Two Sorted Arrays (两个排序数组的中位数)

    要求:Median of Two Sorted Arrays (求两个排序数组的中位数) 分析:1. 两个数组含有的数字总数为偶数或奇数两种情况.2. 有数组可能为空. 解决方法: 1.排序法 时间复 ...

  6. lintcode:合并两个排序链表

    题目: 合并两个排序链表 将两个排序链表合并为一个新的排序链表  样例 给出 1->3->8->11->15->null,2->null, 返回 1->2-& ...

  7. LeetCode-4. 两个排序数组的中位数(详解)

    链接:https://leetcode-cn.com/problems/median-of-two-sorted-arrays/description/ 有两个大小为 m 和 n 的排序数组 nums ...

  8. JavaScript实现获取两个排序数组的中位数算法示例

    本文实例讲述了JavaScript排序代码实现获取两个排序数组的中位数算法.分享给大家供大家参考,具体如下: 题目 给定两个大小为 m 和 n 的有序数组 nums1 和 nums2 . 请找出这两个 ...

  9. 【转载】C#代码开发过程中如何快速比较两个文件夹中的文件的异同

    在日常的使用电脑的过程中,有时候我们需要比较两个文件夹,查找出两个文件夹中不同的文件以及文件中不同的内容信息,进行内容的校对以及合并等操作.其实使用Beyond Compare软件即可轻松比较,Bey ...

随机推荐

  1. 力扣1423. 可获得的最大点数-C语言

    题目 题目链接 几张卡牌 排成一行,每张卡牌都有一个对应的点数.点数由整数数组 cardPoints 给出. 每次行动,你可以从行的开头或者末尾拿一张卡牌,最终你必须正好拿 k 张卡牌. 你的点数就是 ...

  2. Codeforces Round #655 (Div. 2) B. Omkar and Last Class of Math

    题目链接:https://codeforces.com/contest/1372/problem/B 题意 给出一个正整数 $n$,找到两个正整数 $a,b$ 满足 $a+b = n$ 且 $LCM( ...

  3. B. Queue

    During the lunch break all n Berland State University students lined up in the food court. However, ...

  4. poj1180 Batch Scheduling

    Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 3590   Accepted: 1654 Description There ...

  5. C#之字符编码

    在 Windows Vista 及之后的版本中,每个Unicode字符都使用UTF-16编码,UTF的全称是 Unicode Transformation Format(Unicode 转换格式).U ...

  6. Go中的Socket编程

    在很多底层网络应用开发者的眼里一切编程都是Socket,话虽然有点夸张,但却也几乎如此了,现在的网络编程几乎都是用Socket来编程.你想过这些情景么?我们每天打开浏览器浏览网页时,浏览器进程怎么和W ...

  7. 实战交付一套dubbo微服务到k8s集群(2)之Jenkins部署

    Jenkins官网:https://www.jenkins.io/zh/ Jenkins 2.190.3 镜像地址:docker pull jenkins/jenkins:2.190.3 1.下载Je ...

  8. Splunk监控软件操作

    一.  Splunk公司与产品 美国Splunk公司,成立于2004年,2012年纳斯达克上市,第一家大数据上市公司,荣获众多奖项和殊荣.总部位于美国旧金山,伦敦为国际总部,香港设有亚太支持中心,上海 ...

  9. Sentry 中文版

    Sentry 中文版 汉化 https://sentry.io/settings/account/details/ 打开用户设置 User settings 语言选择中文 Simplified Chi ...

  10. TypeScript Generics All In one

    TypeScript Generics All In one TypeScript 泛型 代码逻辑复用 扩展性 设计模式 方法覆写, 直接覆盖 方法重载,参数个数或参数类型不同 test " ...