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中國

    Linux中國

    捐贈 Let's Encrypt,共建安全的互聯網

    隨著 Mozilla、蘋果和谷歌對沃通和 StartCom 這兩家 CA 公司處罰落定,很多使用這兩家 CA 所簽發證書的網站紛紛尋求新的證書籤發商。有一個非盈利組織可以為大家提供了免費、可靠和安全的 SSL 證書服務,這就是 Let's Encrypt 項目。現在,它需要您的幫助
    Linux中國

    關於Linux防火牆iptables的面試問答

    Nishita Agarwal是Tecmint的用戶,她將分享關於她剛剛經歷的一家公司(印度的一家私人公司Pune)的面試經驗。在面試中她被問及許多不同的問題,但她是iptables方面的專家,因此她想分享這些關於iptables的問題和相應的答案給那些以後可能會進行相關面試的人。 所有的問題和相應的答案都基於Nishita Agarwal的記憶並經過了重寫。 嗨,朋友!我叫Nishita Agarwal。我已經取得了理學學士學位,我的專業集中在UNIX和它的變種(BSD,Linux)。它們一直深深的吸引著我。我在存儲方面有1年多的經驗。我正在尋求職業上的變化,並將供職於印度的P
    Linux中國

    Lets Encrypt 已被所有主流瀏覽器所信任

    旨在讓每個網站都能使用 HTTPS 加密的非贏利組織 Lets Encrypt 已經得了 IdenTrust的交叉簽名,這意味著其證書現在已經可以被所有主流的瀏覽器所信任。從這個裡程碑事件開始,訪問者訪問使用了Lets Encrypt 證書的網站不再需要特別配置就可以得到 HTTPS 安全保護了。 Lets Encrypt 的兩個中級證書 ...