老掉牙的Linux uniq還能這麼玩兒!悲憤網友:以前都白學了!

2020-12-13 程式設計師小助手

引言

如果你是一個Linux用戶,並且工作涉及到處理和操作文本文件和字符串,那麼你應該已經熟悉uniq命令了,因為它是該領域最常用的命令。

對於不熟悉uniq命令的人來說,它就是一個命令行工具,用於列印或省略重複的行。這基本上是從輸入中過濾相鄰的匹配行,然後寫入輸出。如果沒有選項,則將匹配的行合併到第一個出現的行。

下面是使用uniq命令的幾個例子。

舉一些慄子

忽略重複項

在不指定任何參數的情況下執行uniq命令只會忽略重複的內容並顯示惟一的字符串輸出。

foo@bar:~/Documents/files$cat file1 HelloHello How are you? How are you? Thank you Thank you foo@bar:~/Documents/files$ uniq file1 Hello How are you? Thank you

顯示重複的行數

使用-c參數,可以查看文件中的重複行數

foo@bar:~/Documents/files$ cat file1 Hello Hello How are you? How are you? Thank you Thank you foor@bar:~/Documents/files$ uniq -c file12 Hello 2 How are you? 2 Thank you

僅輸出有重複的行

通過使用-d參數,我們可以只選擇文件中重複的行

foo@bar:~/Documents/files$ cat file1 Hello Hello Good morning How are you? How are you? Thank you Thank you Bye foo@bar:~/Documents/files$ uniq -d file1 Hello How are you? Thank you

比較時忽略大小寫

通常,當您使用uniq命令時,它會考慮字母的情況。但是如果你想忽略這種情況,你可以使用-i參數

foo@bar:~/Documents/files$ cat file1 Hello hello How are you? How are you? Thank you thank you foo@bar:~/Documents/files$ uniq file1 Hello hello How are you? Thank you thank you foo@bar:~/Documents/files$ uniq -i file1 Hello How are you? Thank you

只列印唯一行

如果只想查看文件中的唯一行,可以使用-u參數

foo@bar:~/Documents/files$ cat file1 Hello Hello Good morning How are you? How are you? Thank you Thank you Bye foo@bar:~/Documents/files$ uniq -u file1 Good morning Bye

對重複項進行排序和查找

有時,重複的條目可能包含在文件的不同位置。在這種情況下,如果我們簡單地使用uniq命令,它將不會在不同的行中檢測到這些重複的條目。在這種情況下,我們首先需要將文件排序,然後找到重複項。

foo@bar:~/Documents/files$ cat file1 Adam Sara Frank John Ann Matt Harry Ann Frank John foo@bar:~/Documents/files$ sort file1 | uniq -c1 Adam 2 Ann 2 Frank 1 Harry 2 John 1 Matt 1 Sara

將輸出保存到文件中

我們的uniq命令的輸出可以簡單地保存在另一個文件中,如下所示

foo@bar:~/Documents/files$ cat file1 Hello Hello How are you? Good morning Good morning Thank you foo@bar:~/Documents/files$ uniq -u file1 How are you? Thank you foo@bar:~/Documents/files$ uniq -u file1 outputfoo@bar:~/Documents/files$ cat output How are you? Thank you

忽略開頭N個字符

為了在開始時忽略幾個字符,可以使用-s參數,但是需要指定需要忽略的字符數

foo@bar:~/Documents/files$ cat file1 1apple 2apple 3pears 4banana 5banana foo@bar:~/Documents/files$ uniq -s 1 file1 1apple 3pears 4banana

寫在最後

好吧,都是老古董的技術,都是老掉牙的選項,都是幾十年的老程序!

可是每天都穿插在我們的命令行中,孜孜不倦,穩定地執行著管理員的命令。

這是Linux系統的基石,是經典流傳的口碑,值得我們仔細掌握倒背如流!

Happy coding :)

我是 @程式設計師小助手 ,持續分享編程故事,歡迎關注。

相關焦點

  • linux sort,uniq,cut,wc命令詳解
    uniq命令可以去除排序過的文件中的重複行,因此uniq經常和sort合用。也就是說,為了使uniq起作用,所有的重複行必須是相鄰的。uniq語法[root@www~]# uniq [-icu]選項與參數:-i   :忽略大小寫字符的不同;-c  :進行計數-u  :只顯示唯一的行testfile的內容如下cat testfilehelloworldfriend
  • Linux Shell教程 - 如何刪除重複的文本行
    2、uniq命令 - 在Linux或Unix上運行或省略重複的行使用Sort,Uniq和Shell管道刪除重複行使用以下語法:sort {file-name} | uniq -usort file.log | uniq -u使用uniq刪除重複的行以下是使用cat
  • linux uniq 命令實用手冊
    Linux uniq 命令用於處理文本內容中的重複行
  • uniq有團綜嗎?uniq怎麼不活動了?uniq為什麼不能合體成員都有誰?
    uniq是2014年出道的組合,這兩年隨著成員王一博和李汶翰的走紅,組合uniq也受到了網友的關注。不過就在大家紛紛好奇uniq的時候,這個組合卻一直沒有什麼公開的合體活動。uniq為什麼不能合體呢?uniq組合發生了什麼事情呢?uniq現狀如何呢?小編今天就來為大家揭秘一下。
  • 每天學一個 Linux 命令(33):uniq
    昨日推薦:每天學一個 Linux 命令(32):sort命令簡介uniq 命令用於去除文件中重複行,一般與 sort 命令結合使用。語法格式uniq [選項] [標準輸入 [輸出]]uniq [OPTION] [INPUT [OUTPUT]]輸入文件 #指定要去除的重複行文件。如果不指定該項,則從標準讀入輸出文件 #指定要去除重複行後的內容要寫入的輸出文件。
  • 性能工具之linux常見日誌統計分析命令
    引言在上文中性能工具之linux三劍客awk、grep、sed詳解,我們已經詳細介紹 linux
  • 用Linux uniq一眼找出不一樣的那行
    引言如果你是Linux用戶,並且工作涉及處理和操作文本文件和字符串,那麼你應該已經熟悉了uniq命令,因為它是最常用的命令。對於那些不熟悉uniq命令的人來說,它就是一個命令行工具,用於列印或忽略重複的字符串和行。
  • 「原來紙還能這麼玩兒」
    紙城牆、紙森林、紙動物、紙拱橋……「原來紙還能這麼玩兒」,在這個用紙創造出來的童話世界中,孩子們認識紙、學習紙、玩轉紙,通過老師的指導和自己的動手實踐,重新定義了紙在自己心中的印象。 「其實紙沒那麼脆弱」 「咦,連桌椅都是紙做的。」小能人陳昱航一屁股坐在紙凳子上,沒想到竟出奇地穩當。其他孩子也圍著紙桌子左瞧瞧右看看,「桌子上面還壓著這麼重的一塊玻璃,難道不會塌嗎?」
  • Linux 上 12 個高效的文本過濾命令
    7、 uniq 命令uniq[16] 命令用於報告或者忽略重複行,它從標準輸入過濾行,並且把結果寫到標準輸出。在對一個輸入流運行 sort 之後,你可以使用 uniq 刪除重複行,如下例所示。linuxsay.comwindowsmint.comtecmint@TecMint ~ $ sort domains.list | uniq -c 2 linuxsay.com2 news.tecmint.com2 tecmint.com1 windowsmint.com 通過閱讀
  • 史上最全的 Linux Shell 文本處理工具集錦,快收藏!
    、tr、cut、paste、wc、sed、awk;對shell腳本使用的原則是命令單行書寫,儘量不要超過2行;如果有更為複雜的任務需求,還是考慮python吧;我把 linux 相關的文章整理成了 PDF,關注公眾號 Java後端 並回復 666 下載。
  • 這麼多年的雙曲線都白學了嗎?
    MOOK 高考 · 數學(二輪)2016-2017年 第53期這麼多年的雙曲線都白學了嗎?作者:張遠志有人問我,你為什麼數學學得比別人好,學得比別人快?我笑而不語,扔給他一本教科版初中七年級語文課本,讓他翻到第七單元第26課,看至課文倒數第二句話加引號處,並大聲朗讀出來,「我亦無他,唯手熟爾!」
  • 不得不看的17 個linux實用技巧
    /backup/ ;註解:find –name 主要用於查找某個文件名字,-exec 、xargs可以用來承接前面的結果,然後將要執行的動作,一般跟find在一起用的很多,find使用我們可以延伸-mtime查找修改時間、-type是指定對象類型(常見包括f代表文件、d代表目錄),-size 指定大小,例如經常用到的:查找當前目錄30天以前大於
  • Linux常用操作命令——文本顯示和處理
    1.2.3 回卷顯示文本命令 less語法:less[選項] [文件名]less的作用與more十分的相似,都可以用來瀏覽文件的內容,不同的是less 允許使用者往迴轉動。]1.2.6 對文件中的數據進行排序的命令 sort語法:sort [選項] [文件]我們在file.txt文件中寫入一段話(每個單詞為一段),hello everyone welcome to damuchacha's official account let's study linux
  • Linux 運維需要掌握的 17 個實用技巧
    /backup/ ;註解:find –name 主要用於查找某個文件名字,-exec 、xargs可以用來承接前面的結果,然後將要執行的動作,一般跟find在一起用的很多,find使用我們可以延伸-mtime查找修改時間、-type是指定對象類型(常見包括f代表文件、d代表目錄),-size 指定大小,例如經常用到的:查找當前目錄30天以前大於
  • 2020年linux份額不斷上漲,網友:大家都怕美國了,不敢用windows
    而從2020年來看,linux的份額就一直在上漲,尤其是3、4、5這三個月,飆升的還是蠻快的,按照這個速度一直漲下去,可能今年就能夠超過MacOS了。那麼為何今年linux的份額一直上漲?有網友認為,這是因為大家都怕了美國,想要去美化,所以儘量少用windows系統,免得被卡脖子。
  • 我看App | 馬卡龍,圖片還能這麼玩兒?
    無論多少個人,馬卡龍app都能準確識別出來!挨個兒p圖原來可以這麼簡單呀~照片場景中的人、狗狗、貓咪、背景這麼多種元素,智能識別靠譜嗎?當然靠譜!無論是人物還是動物或是背景,馬卡龍玩圖都能精確識別,每個元素在後續的美圖中都可以獨立操作哦~幫你開啟玩兒圖的新世界!
  • 《Linux就該這麼學》與《鳥哥的linux私房菜》哪個更適合初學者?
    對於習慣用Windows系統的人來說,linux就是個另類,很多東西用不慣,更別提是熟練使用了。也就是說無論你使用Windows多好,對於linux系統來說你都是個小白。
  • 除了電子產品,我們還能和孩子們一起玩兒什麼?
    難得的8天小長假裡,帶娃的日常是既要讓孩子玩兒的開心,又要來點什麼特別的。 去網紅地打卡, 帶娃去遊樂場,假期過半了的時候該收收心了, 這個時候給孩子輔導一下作業,看看動畫片。如果假期的後半程就這麼過去了似乎是有些單調的了呢。 那麼有沒有什麼好玩的能在家就能玩的呢?
  • uniq:那時的王一博才是甜甜!喜歡一個人愛上一個團,團魂炸裂!
    他們的關係真的非常非常非常好即使到現在,每個人都分開了,但是他們互相肯定有聯繫從微博上看他們每一個人你會發現,都會有另外四個人的只有那個時候的王一博才是王甜甜這個團每個人都很厲害>跳舞都超級棒每一個人都代表著uniq這個團隊他們五個的關係真的好李汶翰:「只有我們能欺負軒哥,其他人都不可以」李汶翰說過「請不要只愛我一個,五個人都要愛哦」。
  • 17個在 Linux 運維中定要掌握的實用技巧
    backup/ ;註解:find –name 主要用於查找某個文件名字,-exec 、xargs可以用來承接前面的結果,然後將要執行的動作,一般跟find在一起用的很多,find使用我們可以延伸-mtime查找修改時間、-type是指定對象類型(常見包括f代表文件、d代表目錄),-size 指定大小,例如經常用到的:查找當前目錄30天以前大於