Linux comm命令求出文件的交集、差集

A(1,2,3)和B(3,4,5),A和B的交集是3,A对B的差集是1和2,B对A的差集是4和5,A和B求差的结果是1、2、4、5。

在Linux中可以使用comm命令求出这些集。

[[email protected] tmp]# cat <<eof>set1.txt
> orange
> gold
> apple
> sliver
> steel
> iron
> eof
[[email protected] tmp]# cat <<eof>set2.txt
> orange
> gold
> cookiee
> carrot
> eof

使用comm命令。

[[email protected] tmp]# comm set1.txt set2.txt
apple
                orange
comm: file 1 is not in sorted order
comm: file 2 is not in sorted order
                gold
        cookiee
        carrot
silver
steel
iron

提示没有排序,所以comm必须要保证比较的文件是有序的。

[[email protected] tmp]# sort set1.txt -o set1.txt;sort set2.txt -o set2.txt
[[email protected] tmp]# comm set1.txt set2.txt
apple
        carrot
        cookiee
                gold
iron
                orange
silver
steel

结果中输出了3列,每一列使用制表符\t隔开。第一列是set1.txt中有而set2.txt中没有的,第二列则是set2.txt中有而set1.txt中没有的,第三列是set1.txt和set2.txt中都有的。

根据这三列就可以求出交集、差集和求差。

交集就是第三列。使用-1和-2分别删除第一第二列就是第三列的结果。

[[email protected] tmp]# comm set1.txt set2.txt -1 -2
gold
orange

A对B的差集就是第一列,B对A的差集就是第二列。

[[email protected] tmp]# comm set1.txt set2.txt  -2 -3  # A对B的差集
apple
iron
silver
steel
[[email protected] tmp]# comm set1.txt set2.txt  -1 -3   # B对A的差集
carrot
cookiee

A和B的求差就是第一列和第二列的组合。

[[email protected] tmp]# comm set1.txt set2.txt  -3
apple
        carrot
        cookiee
iron
silver
steel

但是这样分两列的结果不方便查看,应该进行处理使它们显示在同一列上。

[[email protected] tmp]# comm set1.txt set2.txt  -3 | tr "\t" "\0"
apple
carrot
cookiee
iron
silver
steel

回到系列文章大纲:http://www.cnblogs.com/f-ck-need-u/p/7048359.html

转载请注明出处:http://www.cnblogs.com/f-ck-need-u/p/7454694.html

注:若您觉得这篇文章还不错请点击下右下角的推荐,有了您的支持才能激发作者更大的写作热情,非常感谢!

时间: 2024-08-05 20:25:07

Linux comm命令求出文件的交集、差集的相关文章

Linux常用命令二之文件查找命令

本文对Linux常用命令做一个总结,方便日后查阅. (1) which命令 我们经常在linux要查找某个文件,但不知道放在哪里了,可以使用下 面的一些命令来搜索: ? ? ? ?which??查看可执行文件的位置 ? ? ? ?whereis?查看文件的位置 ? ? ? ?locate???配合数据库查看文件位置 ? ? ? ?find???实际搜寻硬盘查询文件名称 which命令的作用是,在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一 个搜索结果.也就是说,使用which命

Linux常用命令_(文件查看)

文件查看主要有以下命令 cat.more.less.head.tail cat命令:是一个文本文件查看和连接工具.从第一个字节开始正向查看文件的内容,适用于小文件 以第一行开始,显示没有停顿,文件较长的话,只能看到最后一页内容在屏幕上 当文件内容过多时,就带来一个问题,因为文本在屏幕上迅速地闪过,用户来不及看清其内容.因此,当文件内容较大时,一般可用more等命令分屏显示,以免因屏幕滚动太快而无法看清. 说明:把档案串连接后传到基本输出(屏幕或加 > fileName 到另一个档案) 主要参数:

如何将Linux rm命令删除的文件放入垃圾箱

因为rm命令删除的文件是不会放入垃圾箱的,所以无法恢复,下面小编就给大家介绍一种方法,通过替换Linux rm命令的方法,从而将rm命令删除的文件放入垃圾箱. 方法: 1. 在/home/username/ 目录下新建一个目录,命名为:.trash 2. 在/home/username/tools/目录下,新建一个shell文件,命名为: remove.sh PARA_CNT=$# TRASH_DIR="/home/username/.trash" for i in $*; do ST

linux常用命令:创建文件和文件夹

1.首先说一下touch 创建文件的命令,touch可以用于创建二进制文件,用法非常简单.用法:touch+文件名,touch与文件名之间一定要有空格.图中先用之前分享过的命令来查看一下/目录下面有多少文件以及文件的名字. 2.这里就要演示一下touch 的用法了,比如我要创建一个文件名字为abc的二进制文件,那么在linux里公式就应该写成 #touch abc 具体操作如图显示. 3.创建完成后,用ls命令来查看一下我们创建的文件,大家看到图中红色箭头所指的abc文件就是新创建的文件. 4.

Linux学习命令汇总八——文件查找命令find选项及使用技巧

本章Blog相关Linux知识点 find与grep的不同点: find为文件搜索命令--用来在指定目录下查找文件,而grep 为文本搜索命令--根据用户指定的文本模式对目标文件进行逐步搜索,显示能够被匹配的行 : find选项支持文件通配符,而grep选线支持正则表达式  : find查找为精确查找,精确匹配但搜索速度稍慢. grep命令选项及正则表达式类型,详细请参考前文"Linux学习命令汇总三--Linux用户组管理,文件权限管理,文本搜索命令grep及正则表达式"   bas

linux常用命令集(文件和目录操作,共40个)

---恢复内容开始--- 1. ls [命令作用] 列出并显示目录中的文件 [命令语法] ls   [选项]  [参数] [常用选项] -l 长格式显示(词条属性依次文件类型,权限,硬链接数,属主,属组,大小,时间,文件名) -a 显示隐藏文件(包括"."和"..",linux默认以"."开头的文件为隐藏文件) -A    显示隐藏文件(不包括"."和"..") -i  显示inode号 -d 仅显示指定目

Linux基础命令,目录文件操作,vi编辑器详解

一.linux基础命令 linux命令的执行必须依赖于shell命令解释器.shell实际上是在linux系统中运行的一种特殊程序,它位于操作系统内核与用户之间,负责接收用户输入的命令并进行解释,将需要执行的操作传递给系统内核执行,shell在用户和内核之间充当了一个"翻译官"的角色.当用户登录到linux系统时,会自动加载一个shell程序,以便给用户提供可以输入命令的操作系统. 1.首先介绍一下快捷键 Tab键:用来补齐命令字或文件.目录名,例如输入"ifcon"

【Linux】命令写在文件中并调用awk -f

我们在使用awk命令的时候,有时候命令特别长,在终端写出来格式太乱,难以阅读,以下是一个将命令写在文件中,并使用awk调用的具体案例 1.现在有文件file3.txt,内容如下: 2.ak2.awk脚本 #打印标题并格式化打印出数量合计 BEGIN { FS="\t" #设置字段分割符 printf("%10s %2s %5s %s\n\n", "Fruits","Num","Price","Pl

Linux下命令删除乱码文件

当文件名为乱码的时候,无法通过键盘输入文件名,所以在终端下就不能直接利用rm,mv等命令管理文件了. 但是每个文件都有一个i节点号,可以通过i节点号来管理文件.首先,要取得文件的i节点号.这个可以通过ls命令的-i选项获得得. -bash-3.00$ ls -i 41697812 a 32983551 di 32983554 ethnet.c 32983543 hard_link 32983542 de.c 32983544 ethnet 32983541 ethnet.h 32983543 k