歡迎光臨
每天分享高質量文章

為初學者提供的 uniq 命令教程及示例 | Linux 中國

該命令會幫助你輕鬆地從檔案中找到重覆的行。它不僅用於查詢重覆項,而且我們還可以使用它來刪除重覆項,顯示重覆項的出現次數,只顯示重覆的行,只顯示唯一的行等。
— Sk


致謝
編譯自 | https://www.ostechnix.com/uniq-command-tutorial-examples-beginners/ 
 作者 | Sk
 譯者 | MjSeven ? ? ? 共計翻譯:24 篇 貢獻時間:72 天

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

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

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

  1. vi ostechnix.txt

  1. welcome to ostechnix

  2. welcome to ostechnix

  3. Linus is the creator of Linux.

  4. Linux is secure by default

  5. Linus is the creator of Linux.

  6. Top 500 super computers are powered by Linux

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

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

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

  1. uniq ostechnix.txt

示例輸出:

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

2、 刪除所有重覆的行

  1. sort ostechnix.txt | uniq

示例輸出:

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

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

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

  1. sort ostechnix.txt | uniq -u

示例輸出:

  1. Linux is secure by default

  2. Top 500 super computers are powered by Linux

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

4、 只顯示重覆的行

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

  1. sort ostechnix.txt | uniq -d

示例輸出:

  1. Linus is the creator of Linux.

  2. welcome to ostechnix

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

  1. sort ostechnix.txt | uniq -D

在下麵的截圖中看兩個選項的區別:

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

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

  1. sort ostechnix.txt | uniq -c

示例輸出:

  1. 2 Linus is the creator of Linux.

  2. 1 Linux is secure by default

  3. 1 Top 500 super computers are powered by Linux

  4. 2 welcome to ostechnix

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

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

示例輸出:

  1. 2 welcome to ostechnix

  2. 2 Linus is the creator of Linux.

  3. 1 Top 500 super computers are powered by Linux

  4. 1 Linux is secure by default

6、 將比較限製為 N 個字元

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

  1. uniq -d -w 4 ostechnix.txt

7、 忽略比較指定的 N 個字元

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

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

  1. uniq -d -s 4 ostechnix.txt

為了忽略比較前 N 個欄位(LCTT 譯註:即前幾列)而不是字元,在上面的命令中使用 -f 選項。

欲瞭解更多詳情,請參考幫助部分:

  1. uniq --help

也可以使用 man 命令檢視:

  1. man uniq

今天就到這裡!我希望你現在對 uniq 命令及其目的有一個基本的瞭解。如果你發現我們的指南有用,請在你的社交網路上分享,並繼續支援我們。更多好東西要來了,請繼續關註!

乾杯!


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

作者:SK[2] 譯者:MjSeven 校對:wxy

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

贊(0)

分享創造快樂