博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
文本去重-----awk或者uniq
阅读量:4959 次
发布时间:2019-06-12

本文共 1761 字,大约阅读时间需要 5 分钟。

对于awk '!a[$3]++',需要了解3个知识点

1、awk数组知识,不说了

2、awk的基本命令格式 awk 'pattern{action}'

    省略action时,默认action是{print},如awk '1'就是awk '1{print}'

3、var++的形式:先读取var变量值,再对var值+1


以数据

1 2 3

1 2 3

1 2 4

1 2 5

为例,对于awk '!a[$3]++'

awk处理第一行时: 先读取a[$3]值再自增,a[$3]即a[3]值为空(0),即为awk '!0',即为awk '1',即为awk '1{print}'

awk处理第二行时: 先读取a[$3]值再自增,a[$3]即a[3]值为1,即为awk '!1',即为awk '0',即为awk '0{print}'

.............


最后实现的效果就是对于$3是第一次出现的行进行打印,也就是去除$3重复的行

转自:

sort和uniq

重复行通常不会造成问题,但是有时候它们的确会引起问题。此时,不必花上一个下午的时间来为它们编制过滤器,uniq 命令便是唾手可得的好工具。

了解一下它是如何节省您的时间和精力的。进行排序之后,您会发现有些行是重复的。有时候该重复信息是不需要的,可以将它除去以节省磁盘空间。不必对文本行进行排序,但是您应当记住 uniq 在读取行时会对它们进行比较并将只除去两个或更多的连续行。下面的示例说明了它实际上是如何工作的:

1. 用 uniq 除去重复行

$ cat happybirthday.txt
Happy Birthday to You!
Happy Birthday to You!
Happy Birthday Dear Tux!
Happy Birthday to You!

$ sort happybirthday.txt 
Happy Birthday Dear Tux!
Happy Birthday to You!
Happy Birthday to You!
Happy Birthday to You!

$ sort happybirthday.txt | uniq
Happy Birthday Dear Tux!
Happy Birthday to You!

警告:请不要使用 uniq 或任何其它工具从包含财务或其它重要数据的文件中除去重复行。在这种情况下,重复行几乎总是表示同一金额的另一个交易,将它除去会给会计部造成许多困难。千万别这么干! 

2. 使用 -u 和 -d 选项     

$ sort happybirthday.txt | uniq -u
Happy Birthday Dear Tux!

$ sort happybirthday.txt | uniq -d
Happy Birthday to You!
 

您还可以用 -c 选项从 uniq 中获取一些统计信息:

清单

3. 使用 -c 选项 
    
$ sort happybirthday.txt | uniq -uc
1 Happy Birthday Dear Tux!

$ sort happybirthday.txt | uniq -dc
3 Happy Birthday to You!
      

就算 uniq 对完整的行进行比较,它仍然会很有用,但是那并非该命令的全部功能。特别方便的是:使用 -f 选项,后面跟着要跳过的字段数,它能够跳过给定数目的字段。当您查看系统日志时这非常有用。通常,某些项要被复制许多次,这使得查看日志很难。使用简单的 uniq 无法完成任务,因为每一项都以不同的时间戳记开头。但是如果您告诉它跳过所有的时间字段,您的日志一下子就会变得更加便于管理。试一试 uniq -f 3 /var/log/messages ,亲眼看看。

还有另一个选项 -s ,它的功能就像 -f 一样,但是跳过给定数目的字符。您可以一起使用 -f 和 -s 。 uniq 先跳过字段,再跳过字符。如果您只想使用一些预先设置的字符进行比较,那么该怎么办呢?试试看 -w 选项。

转自:

转载于:https://www.cnblogs.com/catkins/p/5270570.html

你可能感兴趣的文章
wordpress自动截取文章摘要代码
查看>>
[置顶] 一名优秀的程序设计师是如何管理知识的?
查看>>
scanf和gets
查看>>
highcharts 图表实例
查看>>
ubuntu下如何查看用户登录及系统授权相关信息
查看>>
秋季学期学习总结
查看>>
SpringBoot 优化内嵌的Tomcat
查看>>
【LaTeX】E喵的LaTeX新手入门教程(1)准备篇
查看>>
highcharts曲线图
查看>>
extjs动态改变样式
查看>>
PL/SQL Developer 查询的数据有乱码或者where 字段名=字段值 查不出来数据
查看>>
宏定义
查看>>
ubuntu12.04 串口登录系统配置
查看>>
poj3061
查看>>
linux--多进程进行文件拷贝
查看>>
笔记:git基本操作
查看>>
Gold Smith第一章
查看>>
生成php所需要的APNS Service pem证书的步骤
查看>>
JavaWeb之JSON
查看>>
URL中的特殊字符处理
查看>>