如何在linux上使用uniq命令

linuxuniq命令在文字檔案中快速查詢唯一或重複的行。在本指南中,我們將介紹它的多功能性和特性,以及如何充分利用這個漂亮的實用程式。...

linuxuniq命令在文字檔案中快速查詢唯一或重複的行。在本指南中,我們將介紹它的多功能性和特性,以及如何充分利用這個漂亮的實用程式。

在linux上查詢匹配的文字行

uniq命令是快速、靈活的,而且非常擅長它所做的事情。不過,與許多Linux命令一樣,它也有一些怪癖,只要您瞭解這些怪癖就可以了。如果你在沒有一點內幕知識的情況下鋌而走險,結果很可能讓你撓頭。我們邊走邊指出這些怪癖。

uniq命令非常適合那些一心一意、一心只做一件事並把它做好的人。這就是為什麼它也特別適合與管道一起工作,並在命令管道中發揮作用。它最頻繁的合作者之一是sort,因為uniq必須對要處理的輸入進行排序。

讓我們點燃它!

相關:如何在Linux上使用管道

執行uniq沒有選項

我們有一個文字檔案,裡面有羅伯特·約翰遜的歌《我相信我會打掃我的掃帚》的歌詞。讓我們看看uniq是怎麼做的。

我們將鍵入以下內容以將輸出匯入更少的內容:

uniq dust-my-broom.txt | less

如何在linux上使用uniq命令

我們得到整首歌,包括重複的臺詞,用更少的時間:

如何在linux上使用uniq命令

這似乎既不是唯一的行,也不是重複的行。

對,因為這是第一個怪癖。如果在沒有選項的情況下執行uniq,它的行為就像使用了-u(unique line)選項一樣。這告訴uniq只打印檔案中唯一的行。之所以會看到重複行,是因為uniq要將行視為重複行,它必須與其重複行相鄰,這就是sort的作用。

當我們對檔案排序時,它將重複行分組,uniq將它們視為重複行。我們將對檔案使用sort,將排序後的輸出匯入uniq,然後將最終輸出匯入less。

為此,我們鍵入以下內容:

sort dust-my-broom.txt | uniq | less

如何在linux上使用uniq命令

排序後的行列表以較少的格式顯示。

如何在linux上使用uniq命令

“我相信我會把掃帚撣乾淨”這句話,肯定不止一次出現在歌曲中。其實,這首歌的前四行裡重複了兩次。

那麼,為什麼它會出現在一系列獨特的行中呢?因為一行第一次出現在檔案中時是唯一的;只有後面的條目是重複的。您可以將其視為列出每個唯一行的第一個匹配項。

讓我們再次使用sort並將輸出重定向到一個新檔案中。這樣,我們就不必在每個命令中都使用sort。

我們鍵入以下命令:

sort dust-my-broom.txt > sorted.txt

如何在linux上使用uniq命令

現在,我們有一個預排序的檔案要處理。

重複計數

可以使用-c(count)選項列印檔案中每行出現的次數。

鍵入以下命令:

uniq -c sorted.txt | less

如何在linux上使用uniq命令

每行以該行在檔案中出現的次數開始。但是,您會注意到第一行是空的。這說明檔案中有五行空行。

如何在linux上使用uniq命令

如果希望輸出按數字順序排序,可以將uniq的輸出輸入sort。在我們的示例中,我們將使用-r(reverse)和-n(numeric sort)選項,並將結果匯入less。

我們鍵入以下內容:

uniq -c sorted.txt | sort -rn | less

如何在linux上使用uniq命令

該列表根據每行出現的頻率按降序排序。

如何在linux上使用uniq命令

僅列出重複行

如果只想看到檔案中重複的行,可以使用-d(repeated)選項。無論一行在一個檔案中複製多少次,它只列出一次。

要使用此選項,請鍵入以下內容:

uniq -d sorted.txt

如何在linux上使用uniq命令

為我們列出了重複的行。您會注意到頂部的空白行,這意味著該檔案包含重複的空白行,它不是UNIQ所留下的空間來美化列表。

如何在linux上使用uniq命令

我們還可以組合-d(重複)和-c(count)選項,並透過排序來管道輸出。這給我們一個排序的列,其中至少出現兩次。

鍵入以下內容以使用此選項:

uniq -d -c sorted.txt | sort -rn

如何在linux上使用uniq命令

列出所有重複的行

如果要檢視每個重複行的列表,以及每次檔案中出現一行時的條目,可以使用-D(所有重複行)選項。

要使用此選項,請鍵入以下內容:

uniq -D sorted.txt | less

如何在linux上使用uniq命令

清單包含每個重複行的一個條目。

如何在linux上使用uniq命令

如果使用--group選項,則它會在每個組之前(prepend)或之後(append),或在每個組之前和之後(both)列印每個重複的行。

我們使用append作為修飾符,因此鍵入以下內容:

uniq --group=append sorted.txt | less

如何在linux上使用uniq命令

各組之間用空行隔開,以便於閱讀。

如何在linux上使用uniq命令

檢查一定數量的字元

預設情況下,uniq檢查每行的整個長度。但是,如果要將檢查限制為一定數量的字元,可以使用-w(check chars)選項。

在本例中,我們將重複上一個命令,但將比較限制為前三個字元。為此,我們鍵入以下命令:

uniq -w 3 --group=append sorted.txt | less

如何在linux上使用uniq命令

我們收到的結果和分組是完全不同的。

如何在linux上使用uniq命令

所有以“ib”開頭的行都被分組在一起,因為這些行的那些部分是相同的,所以它們被認為是重複的。

同樣,所有以“I'm”開頭的行都被視為重複行,即使文字的其餘部分不同。

忽略一定數量的字元

在某些情況下,在每一行的開頭跳過一定數量的字元可能是有益的,例如對檔案中的行進行編號時。或者,假設您需要uniq跳過一個時間戳,並開始檢查字元6中的行,而不是第一個字元中的行。

下面是一個帶有編號行的已排序檔案的版本。

如何在linux上使用uniq命令

如果希望uniq在字元3處開始比較檢查,可以透過鍵入以下內容使用-s(跳過字元)選項:

uniq -s 3 -d -c numbered.txt

如何在linux上使用uniq命令

行被檢測為重複並正確計數。請注意,顯示的行號是每個重複項第一次出現的行號。

您也可以跳過欄位(一系列字元和一些空白)而不是字元。我們將使用-f(fields)選項來告訴uniq忽略哪些欄位。

我們鍵入以下命令來告訴uniq忽略第一個欄位:

uniq -f 1 -d -c numbered.txt

如何在linux上使用uniq命令

當我們告訴uniq跳過每行開頭的三個字元時,我們得到了相同的結果。

忽略大小寫

預設情況下,uniq區分大小寫。如果同一個字母出現大寫和小寫,uniq認為行是不同的。

例如,檢查以下命令的輸出:

uniq -d -c sorted.txt | sort -rn

如何在linux上使用uniq命令

“我相信我會撣撣我的掃帚”和“我相信我會撣撣我的掃帚”這兩行不被視為重複,因為“相信”中“B”的大小寫不同

如果我們包含-i(忽略大小寫)選項,這些行將被視為重複。我們鍵入以下內容:

uniq -d -c -i sorted.txt | sort -rn

如何在linux上使用uniq命令

現在,這些行被視為重複行並分組在一起。


Linux提供了許多特殊的實用程式供您使用。像他們中的許多人一樣,uniq不是你每天都會用到的工具。

這就是為什麼精通Linux的很大一部分是記住哪個工具可以解決當前的問題,以及在哪裡可以再次找到它。不過,如果你練習的話,你會很順利的。

或者,你可以隨時搜尋如何極客我們可能有一篇文章。

  • 發表於 2021-04-02 16:25
  • 閱讀 ( 47 )
  • 分類:網際網路

你可能感興趣的文章

40多個最常用的linux終端命令

... 在您真正充分利用終端之前,您需要知道如何導航它。這就是為什麼我們認為這些是最基本的Linux命令:如果你不能更改目錄或者在一個你不記得如何使用的命令上獲得幫助,那麼再多的終端知識也幫不了你。 ...

  • 發佈於 2021-03-15 21:40
  • 閲讀 ( 49 )

如何在linux上安裝和使用powershell

... 在本文中,我將向您展示如何在Linux上安裝、執行和使用PowerShell! ...

  • 發佈於 2021-03-16 02:34
  • 閲讀 ( 53 )

如何在android和termux上使用linux命令列

...許您在Android裝置上安裝誠實善良的Linux應用程式。下面是如何使用Termux應用程式。 ...

  • 發佈於 2021-03-18 07:26
  • 閲讀 ( 63 )

如何在windows10上獲得linux bash shell

... 如何在windows10上安裝linux bash shell ...

  • 發佈於 2021-03-21 11:48
  • 閲讀 ( 60 )

linux下如何重新命名檔案

要在Linux中重新命名檔案嗎?如果您知道如何在Windows、macOS或Chrome作業系統中完成這項工作,那麼您就知道如何在這裡完成這項工作。在大多數版本的Linux上,您只需右鍵單擊一個檔案並選擇Rename選項。 ...

  • 發佈於 2021-03-22 02:48
  • 閲讀 ( 66 )

linux正在吃掉你的公羊嗎?如何管理你的記憶

...記憶體。為了理解到底發生了什麼,我們必須看看Linux是如何管理記憶體的。 ...

  • 發佈於 2021-03-23 08:31
  • 閲讀 ( 57 )

如何在linux上使用groupadd管理使用者組

... 相關:如何在Linux中更改密碼 ...

  • 發佈於 2021-03-26 17:15
  • 閲讀 ( 42 )

啟動linux的9個基本命令

... 如何在linux下開啟終端 ...

  • 發佈於 2021-03-26 18:33
  • 閲讀 ( 59 )

如何在linux中新增使用者

想在Linux系統上新增使用者但不知道如何新增?在Linux上使用命令列介面管理使用者無疑是一項複雜的工作。而對於初學者來說,即使新增新使用者也是一場噩夢。 ...

  • 發佈於 2021-03-26 23:29
  • 閲讀 ( 69 )

如何檢查linux核心和作業系統版本

...版本可以讓您對安全更新做出重要決定。我們將向您展示如何找到這些,無論您使用哪個發行版。 滾動和點釋放 你知道你在執行哪個版本的Linux嗎?你能找到核心版本嗎?Linux的滾動發行版,如Arch、Manjaro和openSUSE,經常使用自...

  • 發佈於 2021-04-01 13:11
  • 閲讀 ( 51 )
0sus8kksc
0sus8kksc

0 篇文章

作家榜

  1. admin 0 文章
  2. 孫小欽 0 文章
  3. JVhby0 0 文章
  4. fvpvzrr 0 文章
  5. 0sus8kksc 0 文章
  6. zsfn1903 0 文章
  7. w91395898 0 文章
  8. SuperQueen123 0 文章

相關推薦