Linux之uniq 命令示例

2021-08-19 04:24:28 字數 2810 閱讀 1246

如果你主要是在命令列上工作,並且每天處理大量的文字檔案,那麼你應該了解下 uniq 命令。該命令會幫助你輕鬆地從檔案中找到重複的行。它不僅用於查詢重複項,而且我們還可以使用它來刪除重複項,顯示重複項的出現次數,只顯示重複的行,只顯示唯一的行等。由於 uniq 命令是 gnu coreutils 包的一部分,所以它預裝在大多數 linux 發行版中,讓我們不需要費心安裝。來看一些實際的例子。

請注意,除非重複行是相鄰的,否則 uniq 不會刪除它們。因此,你可能需要先對它們進行排序,或將排序命令與 uniq 組合以獲得結果。讓我給你看一些例子。

首先,讓我們建立乙個帶有一些重複行的檔案:

vi ostechnix.txt

welcome to ostechnix

welcome to ostechnix

linus is the creator of linux.

linux is secure by default

linus is the creator of linux.

top 500 super computers are powered by linux

正如你在上面的檔案中看到的,我們有一些重複的行(第一行和第二行,第三行和第五行是重複的)。

1、 使用 uniq 命令刪除檔案中的連續重複行

如果你在不使用任何引數的情況下使用 uniq 命令,它將刪除所有連續的重複行,只顯示唯一的行。

uniq ostechnix.txt
示例輸出:

如你所見, uniq 命令刪除了給定檔案中的所有連續重複行。你可能還注意到,上面的輸出仍然有第二行和第四行重複了。這是因為 uniq 命令只有在相鄰的情況下才會刪除重複的行,當然,我們也可以刪除非連續的重複行。請看下面的第二個例子。

2、 刪除所有重複的行

sort ostechnix.txt | uniq
示例輸出:

看到了嗎?沒有重複的行。換句話說,上面的命令將顯示在 ostechnix.txt 中只出現一次的行。我們使用 sort 命令與 uniq 命令結合,因為,就像我提到的,除非重複行是相鄰的,否則 uniq 不會刪除它們。

3、 只顯示檔案中唯一的一行

為了只顯示檔案中唯一的一行,可以這樣做:

sort ostechnix.txt | uniq -u
示例輸出:

linux is secure by default

top 500 super computers are powered by linux

如你所見,在給定的檔案中只有兩行是唯一的。

4、 只顯示重複的行

同樣的,我們也可以顯示檔案中重複的行,就像下面這樣:

sort ostechnix.txt | uniq -d
示例輸出:

linus is the creator of linux.

welcome to ostechnix

這兩行在 ostechnix.txt 檔案中是重複的行。請注意 -d(小寫 d) 將會只列印重複的行,每組顯示乙個。列印所有重複的行,使用 -d(大寫 d),如下所示:

sort ostechnix.txt | uniq -d
在下面的截圖中看兩個選項的區別:

5、 顯示檔案中每一行的出現次數

由於某種原因,你可能想要檢查給定檔案中每一行重複出現的次數。要做到這一點,使用 -c 選項,如下所示:

sort ostechnix.txt | uniq -c
示例輸出:

linus is the creator of linux.

linux is secure by default

top 500 super computers are powered by linux

welcome to ostechnix

我們還可以按照每一行的出現次數進行排序,然後顯示,如下所示:

sort ostechnix.txt | uniq -c | sort -nr
示例輸出:

welcome to ostechnix

linus is the creator of linux.

top 500 super computers are powered by linux

linux is secure by default

6、 將比較限制為 n 個字元

我們可以使用 -w 選項來限制對檔案中特定數量字元的比較。例如,讓我們比較檔案中的前四個字元,並顯示重複行,如下所示:

uniq -d -w 4 ostechnix.txt
7、 忽略比較指定的 n 個字元

像對檔案中行的前 n 個字元進行限制比較一樣,我們也可以使用 -s 選項來忽略比較前 n 個字元。

下面的命令將忽略在檔案中每行的前四個字元進行比較:

uniq -d -s 4 ostechnix.txt
為了忽略比較前 n 個字段(lctt 譯註:即前幾列)而不是字元,在上面的命令中使用 -f 選項。

uniq --help
也可以使用 man 命令檢視:

man uniq

linux之uniq 命令詳解

linux uniq 命令用於檢查及刪除文字檔案中重複出現的行列,一般與 sort 命令結合使用。uniq 可檢查文字檔案中重複出現的行列。語法 uniq cdu f 字段 s 字元位置 w 字元位置 help version 輸入檔案 輸出檔案 引數 檔案testfile中第 2 3 5 6 7 ...

Linux命令之uniq命令使用詳解

uniq命令可以去除排序過的檔案中的重複行,因此uniq經常和sort合用。也就是說,為了使uniq起作用,所有的重複行必須是相鄰的。語法 uniq cdu f 字段 s 字元位置 w 字元位置 help version 輸入檔案 輸出檔案 補充說明 uniq可檢查文字檔案中重複出現的行列。引數 c...

Linux命令詳解 Uniq

本次我們來學習一下uniq shell 命令,wiki見這裡 wiki的結果比較簡單,我們可以直接在系統上先man一下看下結果 uniq report or omit repeated lines 這個摘要很有一下,注意是report or omit,也就是說既能顯示某些資訊,也能忽略某些資訊,後者...