`
redalx
  • 浏览: 178456 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

用uniq来处理文件重复数据--交集,差集,计数等

阅读更多
经常有这样的需求:两个文本文件要求取重复的行或只取不重复的,简单的情况下用sort和uniq来处理是非常方便的:
利用现存两个文件,生成一个新的文件

1. 取出两个文件的并集(重复的行只保留一份)

2. 取出两个文件的交集(只留下同时存在于两个文件中的文件)

3. 删除交集,留下其他的行


1. cat file1 file2 | sort | uniq
2. cat file1 file2 | sort | uniq -d
3. cat file1 file2 | sort | uniq -u

当然如果需要计数也有一个很好的参数uniq -c 可以将相同行数的计数放在行首


不过如果要求复杂,这个方法就不好用了,之后我会和大家分享一个按列比较的脚本。
------
另外,顺便将这sort和uniq的详细帮助附到这里供参考(linux常见的命令其实有很强大,只是可能不留心而没有发现):

sort [选项] 文件

说明:sort命令对指定文件中所有的行进行排序,并将结果显示在标准输出上。如不指定输入文件或使用“- ”,则表示排序内容来自标准输入。

sort排序是根据从输入行抽取的一个或多个关键字进行比较来完成的。排序关键字定义了用来排序的最小的字符序列。缺省情况下以整行为关键字按ASCII字符顺序进行排序。

改变缺省设置的选项主要有:

- m 若给定文件已排好序,合并文件。

- c 检查给定文件是否已排好序,如果它们没有都排好序,则打印一个出错信息,并以状态值1退出。

- u 对排序后认为相同的行只留其中一行。

- o 输出文件 将排序输出写到输出文件中而不是标准输出,如果输出文件是输入文件之一,sort先将该文件的内容写入一个临时文件,然后再排序和写输出结果。

改变缺省排序规则的选项主要有:

- d 按字典顺序排序,比较时仅字母、数字、空格和制表符有意义。

- f 将小写字母与大写字母同等对待。

- I 忽略非打印字符。

- M 作为月份比较:“JAN”<“FEB”

- r 按逆序输出排序结果。

  -k, --key=POS1[,POS2] posl - pos2 指定一个或几个字段作为排序关键字,字段位置从posl开始,到pos2为止(包括posl,不包括pos2)。如不指定pos2,则关键字为从posl到行尾。字段和字符的位置从0开始。

- b 在每行中寻找排序关键字时忽略前导的空白(空格和制表符)。

- t separator 指定字符separator作为字段分隔符。



uniq命令

文件经过处理后在它的输出文件中可能会出现重复的行。例如,使用cat命令将两个文件合并后,再使用sort命令进行排序,就可能出现重复行。这时可以使用uniq命令将这些重复行从输出文件中删除,只留下每条记录的唯一样本。

语法:

uniq [选项] 文件

说明:这个命令读取输入文件,并比较相邻的行。在正常情况下,第二个及以后更多个重复行将被删去,行比较是根据所用字符集的排序序列进行的。该命令加工后的结果写到输出文件中。输入文件和输出文件必须不同。如果输入文件用“- ”表示,则从标准输入读取。

该命令各选项含义如下:

- c 显示输出中,在每行行首加上本行在文件中出现的次数。它可取代- u和- d选项。

- d 只显示重复行。

- u 只显示文件中不重复的各行。

- n 前n个字段与每个字段前的空白一起被忽略。一个字段是一个非空格、非制表符的字符串,彼此由制表符和空格隔开(字段从0开始编号)。

+n 前n个字符被忽略,之前的字符被跳过(字符从0开始编号)。

- f n 与- n相同,这里n是字段数。

- s n 与+n相同,这里n是字符数。

------------------
更详细的说明来自linux的man
可参考的网址:
用 sort 和 tsort 对文件进行排序
http://www.ibm.com/developerworks/cn/linux/l-tip-prompt/l-tiptex4/
分享到:
评论

相关推荐

    uniq命令 去除文件中的重复行

    我们应当注意的是,它和sort的区别,sort只要有重复行,它就去除,而uniq重复行必须要连续,也可以用它忽略文件中的重复行。 语法格式:uniq [参数] [文件] 常用参数: -c 打印每行在文本中重复出现的次数 -d ...

    Linux实现文件内容去重及求交并差集

    日常工作中,使用Hive或者Impala查询导出来可能会存在数据重复的现象,但又不想重新执行一遍查询(查询时间稍长,导出文件内容多),因此想到了使用Linux命令将文件的内容重复数据进行去除。 案例如下: 可以看到aaa...

    `sort | 的一个版本uniq -c` 输出在解析每一行时实时更新

    uniqtoosort | uniq -c版本sort | uniq -csort | uniq -c输出在解析每一行时实时更新。用法将一些基于行的东西输送到uniqtoo ,就像你在sort | uniq -csort | uniq -c 。这是一个计算此存储库中文件扩展名的示例,...

    uniqtoo:`sort |的版本uniq -c`,其输出在解析每一行时实时更新

    的一个版本sort | uniq -c sort | uniq -c与输出,在实时更新的各行被解析。 用法 基于线进入管的东西uniqtoo一样的,你会进入sort | uniq -c sort | uniq -c 。 这是一个示例,该示例计算此存储库中文件的扩展名...

    Shell中的sort和uniq命令

    uniq :通常对重复字符进行处理 sort -n sort -r sort -u 去重,u: unique(独一无二的) sort -o 指定输出文件 sort -t 指定分隔符 sort -k 指定列排序(配合-t使用) 所有参数都不改变原文件,只是在终端输出   ...

    数据文件处理命令小结(tr,sort,cut,paste,join,uniq,split)

    数据文件处理命令小结(tr,sort,cut,paste,join,uniq,split),参数的使用说明和大量实例

    uniq-stream:优衣库

    通过管道传输数据,并通过管道传输去重复数据 例子 var uniq = require ( 'uniq-stream' ) var split = require ( 'split' ) var fs = require ( 'fs' ) fs . createReadStream ( 'dupe-ridden-file.txt' ) . pipe ...

    rh-nodejs6-nodejs-lodash.uniq-4.5.0-2.el7.noarch.rpm

    官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装

    linux使用lsof命令查看文件打开情况

    主要给大家介绍了关于在linux中利用lsof命令如何查看文件打开情况的相关资料,文中通过示例代码以及图文介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧

    array-uniq:创建一个没有重复的数组

    创建一个没有重复的数组 安装 $ npm install array-uniq 用法 import arrayUniq from 'array-uniq' ; arrayUniq ( [ 1 , 1 , 2 , 3 , 3 ] ) ; //=&gt; [1, 2, 3] arrayUniq ( [ 'foo' , 'foo' , 'bar' , 'foo' ] ) ; //...

    ember-cli-uniq:实现Uniplaces设计系统的Ember.js的默认组件

    ember-cli-uniq 这是一个插件,其中包含一些Uniplaces产品中最常用的前端组件。 组件的演示可以在上。 安装 在ember-cli项目中安装ember-cli插件: $ ember install ember-cli-uniq 升级中 从ember-cli-uniq@0.2....

    windows下的uniq

    windows下的uniq,很好用的小东西,配合Gawk使用更佳。

    linux下uniq和sort命令用法详解.docx

    linux下uniq和sort命令用法详解.docx

    get_common_uniq_snps_by_chr_position:通过染色体和位置配对值获取常见或独特的snps的脚本

    自述文件 ... 您可以输入任意数量的文件来比较snps。 但是请小心大文件,因为它会读取所有文件的内容。 用法: 查看python脚本中的帮助 python find_common_uniq_snps.py --help 这还将显示一些示例命令

    Uniq extension-crx插件

    Uniq专为组织各种规模的公司中的通信而开发,是一种独特的产品,通过统一且易于使用的协作工具提供音频和视频消息传递,文件共享和电话服务。 它还包括使用多种设备,例如电话,计算机和智能手机,从而提高了用户的...

    LINUX处理文本命令

    使用-m选项, 它将会合并预排序的输入文件. 想了解这个命令的全部参数请参考这个命令的info页. 二. tsort 拓扑排序, 读取以空格分隔的有序对, 并且依靠输入模式进行排序. 三. uniq 这个过滤器将会删除一个已排序...

    rh-nodejs6-nodejs-lodash.uniq-4.5.0-1.el7.noarch.rpm

    官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装

    uniqify:uniq和uniq -c用于网络! http

    要处理此示例项目,您首先需要安装 。 运行应用 设置并启动服务器,如下所示: $ cd example-projects/simple $ lein cljsbuild once $ lein ring server-headless 3000 现在,将您的Web浏览器指向...

    linux.chm文档

    find / -xdev -name \*.rpm 搜索以 '.rpm' 结尾的文件,忽略光驱、捷盘等可移动设备 locate \*.ps 寻找以 '.ps' 结尾的文件 - 先运行 'updatedb' 命令 whereis halt 显示一个二进制文件、源码或man的位置 which ...

    sta2htm:静态时序报告审阅者

    STA MMMC报告审阅者V2021.020)系统要求安装tree包。 安装gnuplot软件包。 (可选的)1)准备运行集定义文件[sta2htm.run] #[VERSION]#STA_RUNSTA_RUN_DIR STA_RUN_GROUPS#-------------------------...GOLDEN-0127repo

Global site tag (gtag.js) - Google Analytics