linux上文件内容去重的问题uniq/awk
1、uniq:只会对相邻的行进行判断是否重复,不能全文本进行搜索是否重复,所以往往跟sort结合使用。
例子1:
[root@aaa01 ~]# cat a.txt
12
34
56
12
[root@aaa01 ~]# cat a.txt|uniq >>au.txt
[root@aaa01 ~]# cat au.txt
12
34
56
12
例子2:
[root@aaa01 ~]# cat b.txt
10
46
32
10
[root@aaa01 ~]# cat b.txt|sort |uniq >>bu.txt
[root@aaa01 ~]# cat bu.txt
10
32
46
2、awk:可以全文本搜索去重然后进行显示
例子1:
如m.txt文本:
[root@aaa01 ~]# cat m.txt
12
34
56
12
[root@aaa01 ~]# awk '!x[$0]++' m.txt >ma1.txt
[root@aaa01 ~]# cat ma1.txt
12
34
56
说明:获取第一行x[12],因为这是第一行,数组m里从没见过12这个变量,那么自然他的值就是假(0)也就是说x[12]=0,这个时候!就有大作用了,他把x[12]假(0)变成了x[12]为真(!0)这个时候原本不改打印的第一行就变成了应该打印了,取逻辑反后对x[12]的值+1然后处理第二行
第二行x[34]这个情况跟刚才第一行的x[12]一样的情况,也应该打印他。
第三行x[56]和第一、二两行一样的处理逻辑。
到第四行的时候情况遍了,因为第一行已经出现过了x[12]并且已经++过了他的值已经是非0而不是前两行的0了,本应打印但这时候再由!取逻辑反就不必打印了
所以执行完就是这个结果。
例子2:
[root@aaa01 ~]# awk 'x[$0]++' m.txt >ma2.txt
[root@aaa01 ~]# cat ma2.txt
12
例子3:
[root@aaa01 ~]# vi n.txt
78
12
01
01
78
[root@aaa01 ~]# awk 'x[$0]++' n.txt >na.txt
[root@aaa01 ~]# cat na.txt
01
78
最新文章
- 修改git的远程仓库命令
- DB2表的重组
- 响应式布局1--媒体查询和-webkit-min-device-pixel-ratio
- linux dmesg命令参数及用法详解(linux显示开机信息命令)
- 天天模拟器 和 Genymotion 设置代理
- Robotium Recorder的初试
- 基于s5pv210嵌入式系统busybox文件系统移植
- kvm 性能调优
- <;经验杂谈>;查询表结构的SQL语句
- [移动网关]2G环境下资源下载有一定概率失败,客户端日志显示收到403错误
- openwrt补丁
- Java基础二
- 基于JDK1.8的LinkedList剖析
- appium--xpath定位元素用法
- 2017-12-20python全栈9期第五天第二节之可变 数据类型和不可变数据类型
- Atitti mybatis的单元测试attilax总结
- how do I get the difference between two R named lists?
- Linux 下 Nginx + JDK + Tomcat + MySQL 安装指南
- [编程题] N阶楼梯上楼问题
- CDOJ 1402 三角形棋盘上的博弈游戏 状压DP
热门文章
- web自动化测试---第一个自动化测试用例
- odoo开发笔记 -- 多对多字段追加数据
- 【Promise】Promise实现请求超时处理(加强版)
- Android_注解+反射代替findViewById()
- Effectively bypassing kptr_restrict on Android
- 程序员进阶之算法练习:LeetCode专场
- web框架的前生今世--从servlet到spring mvc到spring boot
- Ado.net怎么执行存储过程?
- Java中的集合迭代器
- VisualSVN 手动记录访问操作日志