如果您主要在命令行上工作並每天處理大量文本文件,請小心。 優衣庫 命令。

Uniq 命令使查找文件中的重複項和重複行變得容易。 uniq 不僅用於查找重複項,還用於刪除重複項,顯示重複行的出現次數,僅顯示重複行,僅顯示唯一行。

請注意,“uniq”命令不會檢測重複行,除非重複行是相鄰的。所以你可能需要先排序或者使用 sort 命令和 uniq 來獲取結果。讓我給你看一些例子。

uniq 命令是 GNU coreutils 包的一部分,因此它預裝在大多數 Linux 發行版上。所以不費吹灰之力,我們先來看一些uniq命令的實際例子。

內容

  1. uniq 命令示例
    1. 1.使用uniq命令刪除文件中連續的重複行
    2. 2.刪除所有重複行
    3. 3. 只顯示文件中唯一的行
    4. 4.只顯示重複的行
    5. 5.顯示文件中每一行出現的次數
    6. 6. 將比較限制為“N”個字符
    7. 7. 避免與前“N”個字符進行比較

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、2、3 和 5 行是重複的)。

1.使用uniq命令刪除文件中連續的重複行

使用不帶參數的 ‘uniq’ 命令將刪除所有連續的重複行並僅顯示唯一行。

$ uniq ostechnix.txt

示例輸出:

使用 Uniq 命令刪除文件中的連續重複行

如您所見,uniq 命令刪除了指定文件中所有連續的重複行。您可能還注意到,上述輸出的第 2 行和第 4 行仍然存在一些重複。這是因為 uniq 命令只省略相鄰的重複行。當然,您也可以刪除這些不連續的重複項。請參見下面的第二個示例。

2.刪除所有重複行

$ sort ostechnix.txt | uniq

示例輸出:

刪除所有重複行

看?沒有重複或重複的行。即上面的命令將顯示文件的所有行 ostechnix.txt.

上面的示例使用帶有 uniq 的 sort 命令。這是因為,如前所述,除非它們相鄰,否則 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

在下面的屏幕截圖中查看兩個標誌之間的區別。

使用 uniq 命令僅顯示重複的行僅顯示重複行

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”個字符

您可以使用 Uniq 命令將比較限制為文件中特定數量的行字符。 -w 橫幅。例如,讓我們將比較限制為文件中行的前四個字符,並顯示重複行,如下所示。

$ uniq -d -w 4 ostechnix.txt

7. 避免與前“N”個字符進行比較

就像限制比較文件中的 N 個字符行一樣,您也可以使用以下方法避免比較前 N 個字符: -s 橫幅。

以下命令避免與文件中行的前四個字符進行比較。

$ uniq -d -s 4 ostechnix.txt

為避免比較前 N 個字段而不是字符,請在上述命令中使用“-f”標誌。

有關詳細信息,請參閱幫助部分。

$ uniq --help

和手冊頁。

$ man uniq

  • 帶有初學者示例的折疊命令教程

CLI 命令行 LinuxLinux 命令 Linux howtoUniq 命令 Unix