linux上檔案內容去重的問題uniq awk

2022-06-17 10:18:11 字數 1216 閱讀 3208

1、uniq:只會對相鄰的行進行判斷是否重複,不能全文本進行搜尋是否重複,所以往往跟sort結合使用。

例子1

[root@aaa01 ~]# cat a.txt

[root@aaa01 ~]# cat a.txt|uniq >>au.txt

[root@aaa01 ~]# cat au.txt

例子2:

[root@aaa01 ~]# cat b.txt

[root@aaa01 ~]# cat b.txt|sort |uniq >>bu.txt

[root@aaa01 ~]# cat bu.txt

2、awk:可以全文本搜尋去重然後進行顯示

例子1:

如m.txt文字:

[root@aaa01 ~]# cat m.txt

[root@aaa01 ~]# awk '!x[$0]++' m.txt >ma1.txt

[root@aaa01 ~]# cat ma1.txt

說明:獲取第一行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

例子3:

[root@aaa01 ~]# vi n.txt

[root@aaa01 ~]# awk 'x[$0]++' n.txt >na.txt

[root@aaa01 ~]# cat na.txt

Linux檔案內容去重

1 兩個檔案的交集,並集 1.取出兩個檔案的並集 重複的行只保留乙份 cat file1 file2 sort uniq file3 2.取出兩個檔案的交集 只留下同時存在於兩個檔案中的檔案 cat file1 file2 sort uniq d file3 3.刪除交集,留下其他的行 cat fi...

linux 檔案內容去重

1 sort filename uniq filename2 2 awk count 0 filename filename2 原始檔 codingants ubuntu awk cat dup hello world awkcoding ants hello world awkhello worl...

linux 檔案去重

兩個檔案的交集,並集 前提條件 每個檔案中不得有重複行 1.取出兩個檔案的並集 重複的行只保留乙份 cat file1 file2 sort uniq file3 2.取出兩個檔案的交集 只留下同時存在於兩個檔案中的檔案 cat file1 file2 sort uniq d file3 3.刪除交...