linux 文本文件去重,linux上文件內容去重的問題uniq/awk

本文介绍了如何在Linux环境中利用uniq和awk命令进行文本去重操作。通过示例展示了uniq命令通常与sort结合使用,只对相邻重复行进行去除,而awk则能全文本搜索并去重。示例中详细解释了awk命令的逻辑,帮助理解其工作原理。
摘要由CSDN通过智能技术生成

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值