原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://yjplxq.blog.51cto.com/4081353/948349

题外话:说到比较文件,过来人都用过Beyond Compare,老版本时候,我们只能右键选中用于比较的文件,再选中被比较文件,对比。 如今他有了丰富的界面,支持linux上比较文件。 干什么用的?svn管理不善的时候,版本控制做的不好的时候,你就会期望他了。这都是经验- -!

回到正题:在shell中,也有个这么个命令---comm。 comm可用于两个文件之间的比较。可以用于文件的比较,交集,求差以及差集操作。

这个定义其实不够详细,应该是 comm逐行比较已排序的文件1和文件2.

全称:

(惭愧)没有找到合适的全称。 com 很明显是compare开头,m为mode。望高手指正。

查看—help

用法:comm [选项]... 文件1 文件2 
逐行比较已排序的文件文件1 和文件2。

如果不附带选项,程序会生成三列输出。第一列包含文件1 特有的行,第二列包含 文件2 特有的行,而第三列包含两个文件共有的行。

-1        不输出文件1 特有的行 
  -2        不输出文件2 特有的行 
  -3        不输出两个文件共有的行

--check-order            检查输入是否被正确排序,即使所有输入行均成对 
  --nocheck-order        不检查输入是否被正确排序 
  --output-delimiter=STR    依照STR 分列

解读:

1. --check-order

该命令默认情况下  如果希望不检验排序,可以--nocheck-order。

2. --output-delimiter=STR

STR 就是个表达式。 可以是任何非特殊字符

3. -1,-2

可以写成 -12 与普通命令用起来一样

实例:

1.建立A.txt

加入元素

apple 
orange 
gold 
silver 
steel 
iron

2. 建立B.txt

加入元素

orange 
gold 
cookies 
carrot

可以尝试直接比较: comm A.txt B.txt

你会发现提示一个错误,没有排序。

3. 排序

  1. sort A.txt -o A.txt; sort B.txt -o B.txt

4. 比较

  1. $comm A.txt B.txt
  1. apple
  2. carrot
  3. cookies
  4. gold
  5. iron
  6. orange
  7. silver
  8. steel

结果实际为3列 其中第一列是文件1特有 -1表示删除第一列

第二列是文件2特有的  -2代表删除第二列

第三列代表共同有的  -3代表删除共有的列

4.1 打印交集:

$comm –12 A.txt B.txt

4.2 打印两个文件中不同的行

$comm –3 A.txt B.txt

补充个小修改,两列不好看,用sed删除行首的\t

$comm –3 A.txt B.txt | sed 's/^\t//'

实战:

comm在实战中,只会在一些非常特殊的场景中用到。 比较简单,就不举例了。(笔者遇到的场景中,仍然坚持有更好的方案时候,不用这个命令,呵呵)。

本文出自 “书生” 博客,请务必保留此出处http://yjplxq.blog.51cto.com/4081353/948349

【一天一个shell命令】文本操作系列-comm相关推荐

  1. linux操作命令comm,一天一个shell命令 文本操作系列-comm命令用法

    comm命令比较两个已排序文件每行数据的差异,并将其结果显示出来,如果没有指定任何参数,comm命令读取这两个文件,然后生成三列输出:1>仅在file1中出现的行2>仅在file2中出现的 ...

  2. Shell命令行操作

    1.1 shell提示符 [me@linuxbox ~]$ 如果最后一个字符是"#",表示当前终端会话有超级用户权限.使用root用户登录或者使用能提供超级用户权限的终端能获得该权 ...

  3. JAVA好管家,一天一个shell命令 linux好管家-进程-ps命令详解

    小知识(以ps为例): 查看命令路径  which ps 命令帮助 ps --help 命令完全手册: man ps 说明 ps全称是:Process Status (进程状态),他就是提供进程信息的 ...

  4. Shell命令-网络操作之基础之scp、wget

    文件及内容处理 - scp.wget 1. scp:用于不同主机之间复制文件 scp命令的功能说明 scp 命令用于 Linux 之间复制文件和目录.scp 是 secure copy 的缩写, sc ...

  5. linux写文本命令,一天一个shell命令 linux文本操作系列-chmod命令用法

    先来熟悉下权限,以上一个例子comm下的文档为例 $ls -l -rw-rw-r-- 1 yjplxq yjplxq   36  7月 30 22:40 A.txt -rw-rw-r-- 1 yjpl ...

  6. 【一天一个shell命令】文本操作系列-touch

    之前我们学过dd创建测试文件,如果不需要考虑文件大小,创建一个空白文件的话,不妨试试 touch: 将每个文件的访问时间和修改时间改为当前时间. 不存在的文件将会被创建为空文件,除非使用-c 或-h ...

  7. linux touch 源码,一天一个shell命令 linux文本操作系列-touch命令用法

    之前我们学过dd创建测试文件,如果不需要考虑文件大小,创建一个空白文件的话,不妨试试 touch: 将每个文件的访问时间和修改时间改为当前时间. 不存在的文件将会被创建为空文件,除非使用-c 或-h ...

  8. linux中touch命令如何使用,一天一个shell命令 linux文本操作系列-touch命令用法

    之前我们学过dd创建测试文件,如果不需要考虑文件大小,创建一个空白文件的话,不妨试试 touch: 将每个文件的访问时间和修改时间改为当前时间. 不存在的文件将会被创建为空文件,除非使用-c 或-h ...

  9. native react 更新机制_深度使用react-native的热更新能力,必须知道的一个shell命令...

    开篇之前,先讲一个自己开发中的一个小插曲: 今天周日,iOS版 App 周一提交,周三审核通过上架,很给力.不过,中午11:30的时候,运营就反应某个页面有一个很明显的问题,页面没法拉到底部,部分信息 ...

  10. 【一天一个shell命令】【cut】

    1. 命令简介 cut根据指定的定界符,切分文件,并将选中的列输出到标准输出. 2. 用法 cut [选项]... [文件]... 打印输入行的选中的parts 到标准输出 3. 选项 4. 示例 以 ...

最新文章

  1. 任正非:5G独立组网全世界只有华为一家做好了 我们在等待高通进步
  2. ERP内部顾问与外部顾问的区别
  3. 使用UISearchDisplayController
  4. linux mount文件夹
  5. jQuery-DOM
  6. PCF上的Spring Cloud合同和Spring Cloud Services
  7. 简单类及成员实例【C#】
  8. 【OpenCV 例程200篇】25. 图像的平移
  9. 非结构化WEB数据库与图书馆多媒体信息资源的组织利用
  10. 吴恩达深度学习 —— 4.1 深层神经网络
  11. 程序设计与算法----分治之归并排序
  12. 大数据之-Hadoop3.x_MapReduce_区内排序案例---大数据之hadoop3.x工作笔记0117
  13. python程序设计采用格式框架结构_Python笔记:基于Django框架的项目架构程序设计...
  14. 读取浏览器cookies的python脚本
  15. 字节学妹的数据分析笔记,收藏
  16. ios系统gps测试软件,GPS工具箱
  17. lumion无法隐藏活动层_lumion是什么软件?想快速掌握 Lumion?快来拿走这份正确的入门教程!...
  18. 成果丰硕!SWORD 斯沃德惊艳亮相“第18届深圳名品家博会”
  19. PhotoShop中让索引图片解锁使用
  20. iOS 关于音乐锁屏控制音乐(锁屏信息设置)

热门文章

  1. python远程调用摄像头_教你如何利用python调用摄像头
  2. 多个excel表格数据汇总如何完成
  3. V2X车联网-学习整理笔记
  4. 再转个有意思的东西...装B指南...(2008-05-07 12:26)
  5. 服务器 分辨率问题 显示器不显示不出来,显示器没有最佳分辨率及分辨率调不了的解决方法...
  6. 微信android登录协议分析,手机微信协议分析,请教··
  7. 基于SimpItk的下肢全景X光图像拼接
  8. 苹果手机电池健康怎么看_打开手机这个功能,就能知道手机电池的健康度,安卓苹果都可以!...
  9. 计算机白板培训心得,电子白板学习的心得体会
  10. Paraphrasing effectively 有效转述你需要了解这些内容~