`
redalx
  • 浏览: 181483 次
  • 性别: 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 ...

    windows下的uniq

    这里提到的"windows下的uniq"实际上可能是指一个名为UNIQUE.exe的程序,它用于处理数据,去除重复行,与Gawk(GNU Awk)配合工作,提供数据分析中的去重能力。 `uniq`命令在Unix/Linux中是一个非常常见的文本处理...

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

    本篇文章将深入探讨如何使用Linux命令行工具来实现文件内容的去重以及求交集、并集和差集。 一、数据去重 在大数据处理中,重复数据是一个普遍存在的问题。Linux提供了`uniq`命令来去除文件中的重复行。首先,我们...

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

    uniq 命令是 Linux 中的一个文本处理命令,用于去除文本中的重复行。该命令读取输入文件,并比较相邻的行。在正常情况下,第二个及以后更多个重复行将被删去,行比较是根据所用字符集的排序序列进行的。该命令加工后...

    linuxuniq命令参数及用法详解---检查及删除文本文件中重复出现的行列知识.pdf

    - 数据清洗:在处理CSV或其他数据文件时,可以使用`uniq`去除重复的数据记录。 - 日志分析:分析系统或应用程序日志时,去除重复的错误或事件记录。 - 文本分析:在进行文本挖掘或自然语言处理时,可能会用到`...

    `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 。 这是一个示例,该示例计算此存储库中文件的扩展名...

    汽车信息数据-数据集 来自Autoscout的汽车数据,可以用进行数据分析和数据可视化

    数据集介绍 简述 来自Autoscout的汽车数据 内容 该数据集包含以下内容: 总记录数:30000  域名:autoscout24.de  日期范围:2020年2月1日至2020年2月29日   文件扩展名:csv 可用字段: -Uniq ID, -抓取时间...

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

    `lsof`就是这样一个强大的工具,它能提供实时的文件使用情况,包括已删除但仍在使用的文件、网络连接等信息。 ### 文件类型简述 在介绍`lsof`之前,有必要了解Linux中的基本文件类型: 1. **普通文件**:包含文本...

    巧用Linux命令完成统计排序功能.docx

    在Linux环境中,面对数据处理和分析的任务,我们经常会利用各种命令行工具来高效地完成工作。本篇将详细解析如何巧妙地使用Linux命令完成统计排序的功能,以解决找到数量排名前10的记录的问题。 首先,我们需要理解...

    unix shell程序集锦

    使用`sort`和`uniq`命令处理文件A和B的交集、并集和差集。 12. **查找含有指定字符串的文件**: ```bash for file in $(ls $2); do bname=$(grep -l $1 $2/$file); basename $bname; done ``` 在指定的...

    uniq-object-stream:在 JSON 对象上流式传输 uniq

    例如,如果你有一个包含用户信息的数据流,每个对象都有`id`、`email`和`username`等字段,`uniq-object-stream`可以确保数据流中不会有具有相同`id`、`email`和`username`组合的重复对象。这种深度比较的能力是通过...

    linux下uniq和sort命令用法.docx

    uniq 命令是 Linux 中的一个文本处理命令,用于删除或显示文本文件中的重复行。它可以读取输入文件,并比较相邻的行。在正常情况下,第二个及以后更多个重复行将被删去,行比较是根据所用字符集的排序序列进行的。该...

    linux下查找重复文件

    我们可以使用`uniq`命令来过滤掉这些相邻的重复行,但要注意`uniq`只会忽略连续的重复行,所以我们需要先用`sort`对整个输出进行排序: ```bash find . -type f -exec md5sum {} \; | sort | uniq -D ``` `uniq -D...

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

    ### 数据文件处理命令小结 #### 一、转换和删除重复命令——`tr` `tr` 命令主要用于字符转换或删除重复字符。它在Linux运维中非常实用,能够帮助用户快速修改文本文件中的字符。 ##### 命令格式 ``` tr [option] ...

    Linux基础-文字处理命令汇总.docx

    在Linux操作系统中,掌握一些基础的文字处理命令是十分重要的,这些命令可以帮助我们高效地操作文本文件,进行数据处理和分析。以下是对所提及的几个关键命令的详细解释: 1. **wc (Word Count)**: `wc`命令用于...

    007_hadoop中MapReduce应用案例_1_数据去重

    通过`Uniq.java`的实现,我们可以学习到如何设计和编写MapReduce作业,以及如何处理`datadel1.txt`和`datadel2.txt`这类可能含有重复数据的文件。这个案例涵盖了数据处理的关键步骤,包括数据分片、并行处理、中间...

Global site tag (gtag.js) - Google Analytics