LINUX Shell 下求两个文件交集和差集的办法
http://blog.csdn.net/autofei/article/details/6579320
假设两个文件FILE1和FILE2用集合A和B表示,FILE1内容如下:
- a
- b
- c
- e
- d
- a
FILE2内容如下:
- c
- d
- a
- c
基本上有两个方法,一个是comm命令,一个是grep命令。分别介绍如下:
comm命令 , Compare sorted files FILE1 and FILE2 line by line. With no options, produce three-column output. Column one contains lines unique to FILE1, column two contains lines unique to FILE2, and column three contains lines common to both files. 要注意两个文件必须是排序和唯一(sorted and unique)的,默认输出为三列,第一列为是A-B,第二列B-A,第三列为A交B。
直接运行结果如下:
- $ comm a.txt b.txt
- a
- b
- c
- d
- a
- c
- e
- d
- a
仅仅排序:
- $ comm <(sort a.txt ) <(sort b.txt )
- a
- a
- b
- c
- c
- d
- e
排序并且唯一:
- $ comm <(sort a.txt|uniq ) <(sort b.txt|uniq )
- a
- b
- c
- d
- e
如果只想要交集,如下即可:
- $ comm -12 <(sort a.txt|uniq ) <(sort b.txt|uniq )
- a
- c
- d
至于差集,读者自己思考了。
grep 命令是常用的搜索文本内容的,要找交集,如下即可:
- p$ grep -F -f a.txt b.txt
- c
- d
- a
- c
grep不要求排序,但是因为是集合操作,唯一是必须的(不然怎么是集合呢?)。所以:
- $ grep -F -f a.txt b.txt | sort | uniq
- a
- c
- d
差集呢?
- $ grep -F -v -f a.txt b.txt | sort | uniq
- $ grep -F -v -f b.txt a.txt | sort | uniq
- b
- e
第一行结果为B-A,所以为空;第二行为A-B。注意顺序很重要!
LINUX Shell 下求两个文件交集和差集的办法的更多相关文章
- Shell 命令行求两个文件每行对比的相同内容
Shell 命令行求两个文件每行对比的相同内容 遇到的一个实际问题是,2017年08月01日起,所有未经实名的域名,全部停止解析.而我手上有不少域名,其中很多都是没有实名的.但我不知道哪些实名了,哪些 ...
- 用shell求两个文件的差集
假设有两个文件a.file和b.file,分别代表集合A和集合B. a.file的内容如下: abcde b.file的内容如下: cdefg 可以用grep命令 grep命令是常用来搜索文本内容的, ...
- linux系统下怎么安装.deb文件
linux系统下怎么安装.deb文件? deb 是 ubuntu .debian 的格式.rpm 是 redhat .fedora .suse 的格式. 他们不通用(虽然可以转换一下). deb是de ...
- linux系统下,递归删除.svn文件
linux系统下,递归删除.svn文件 SVNLinux 进入要删除的目录,执行下面的命令就可以啦. find . -name "*.svn" | xargs rm -rf
- linux系统下怎么安装.deb文件?
linux系统下怎么安装.deb文件? deb 是 ubuntu .debian 的格式. rpm 是 redhat .fedora .suse 的格式. 他们不通用(尽管能够转换一下). deb是d ...
- Linux系统下的 /etc/fstab 文件解读
1 [root@localhost ~]# cat /etc/fstab 2 3 # 4 # /etc/fstab 5 # Created by anaconda on Sat Nov 3 12:03 ...
- Linux shell 下简单的进度条实现
Linux shell 下简单的进度条实现 [root@db145 ~]# cat print_process.sh function Proceess(){ spa='' i= ] do print ...
- Linux下对比两个文件夹的方法
最近拿到一份源代码,要命的是这份源代码是浅克隆模式的git包,所以无法完整显示里面的修改的内容. 今天花了一点点时间,找了一个在Linux对比两个文件夹的方法. 其实方法很简单,用meld 去对比两个 ...
- linux shell下除了某个文件外的其他文件全部删除的命令
Linux反选删除文件 最简单的方法是 # shopt -s extglob (打开extglob模式) # rm -fr !(file1) 如果是多个要排除的,可以这样: # rm -r ...
随机推荐
- 问题:loadrunner录制event为0
loadrunner录制问题问题1:录制时出现event为0的状况 解决办法: 1.如果是IE浏览器,把启用第三方浏览器扩展*钩给去掉 2使用火狐浏览器,这个就比较好,在lr启动的时候就去勾选 ...
- asp.net 编写验证码
首先准备一个类来实现对验证码的绘制功能. createcode.cs using System; using System.Collections.Generic; using System.Linq ...
- WEB系统技术开发方向
1. UI框架:要可以结合jquery+自定义服务器控件开发一套UI框架: 2.WEB报表设计器:用js开发一套可以自定义报表设计器: 3.WEB自定义表单+工作流设计器: 4.WEB打印组件: 5. ...
- JavaScript高级程序设计(八):基本概念--操作符
操作符包括:算术操作符.位操作符.关系操作符和相等操作符. 一元操作符 1.只能操作一个值得操作符,即递增和递减操作符: 2.递增(++)和递减(--)操作符包括:前置型和后置型.前置型位于要操作的变 ...
- 禁用浏览器缓存Ajax请求
$.ajax({ url: 'url.php', cache: false, success: function(data){ //..... } }); 仅Get有缓存, Post不会缓存
- post 提交数据
1 默认:application/x-www-form-urlencoded 在网页表单中可设置 enctype的值,如果不设,默认是 application/x-www-form-urlencode ...
- 两种js监听滚轮事件的方式
前段时间在写前端的时候,需要监听浏览器的滚轮事件 网上查了一下,找到两种监听滚轮事件的方法: 一.原生js通过window.onscroll监听 //window.onscroll = functio ...
- [.Net MVC] 使用SQL Server数据库代替LocalDb
之前开发的时候一直用的VS2013,所以数据库也用的LocalDb,这给开发带来很大便利.不过由于开发后还要进行部署,就改用了SQL Server 2012,这里总结下过程. 基本环境:VS2013, ...
- HTML Music Entities/音乐符号
HTML Music Entities Musical symbols Description Character(click) HTML-Entity Code-Decimal Code-Hex Q ...
- poj代码搬家啦啦啦
我的poj代码搬家啦,大家想看可以到 blog.csdn.net/michaelysm 来看.欢迎哦