Linux中國

為初學者提供的 uniq 命令教程及示例

如果你主要是在命令行上工作,並且每天處理大量的文本文件,那麼你應該了解下 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

示例輸出:

 2 Linus is the creator of Linux.
 1 Linux is secure by default
 1 Top 500 super computers are powered by Linux
 2 welcome to ostechnix

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

sort ostechnix.txt | uniq -c | sort -nr

示例輸出:

 2 welcome to ostechnix
 2 Linus is the creator of Linux.
 1 Top 500 super computers are powered by Linux
 1 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 命令及其目的有一個基本的了解。如果你發現我們的指南有用,請在你的社交網路上分享,並繼續支持我們。更多好東西要來了,請繼續關注!

乾杯!

via: https://www.ostechnix.com/uniq-command-tutorial-examples-beginners/

作者:SK 譯者:MjSeven 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的電子郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國