為初學者提供的uniq命令教程及示例
如果你主要是在命令行上工作,并且每天處理大量的文本文件,那么你應該了解下 uniq 命令。該命令會幫助你輕松地從文件中找到重復的行。它不僅用于查找重復項,而且我們還可以使用它來刪除重復項,顯示重復項的出現次數,只顯示重復的行,只顯示***的行等。由于 uniq 命令是 GNU coreutils 包的一部分,所以它預裝在大多數 Linux 發行版中,讓我們不需要費心安裝。來看一些實際的例子。
請注意,除非重復行是相鄰的,否則 uniq 不會刪除它們。因此,你可能需要先對它們進行排序,或將排序命令與 uniq 組合以獲得結果。讓我給你看一些例子。
首先,讓我們創建一個帶有一些重復行的文件:
vi ostechnix.txt
welcome to ostechnixwelcome to ostechnixLinus is the creator of Linux.Linux is secure by defaultLinus 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 defaultTop 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
示例輸出:
2 Linus is the creator of Linux.1 Linux is secure by default1 Top 500 super computers are powered by Linux2 welcome to ostechnix
我們還可以按照每一行的出現次數進行排序,然后顯示,如下所示:
sort ostechnix.txt | uniq -c | sort -nr
示例輸出:
2 welcome to ostechnix2 Linus is the creator of Linux.1 Top 500 super computers are powered by Linux1 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
今天就到這里!我希望你現在對 uniq 命令及其目的有一個基本的了解。如果你發現我們的指南有用,請在你的社交網絡上分享,并繼續支持我們。更多好東西要來了,請繼續關注!


























