1. 程式人生 > >Linux 命令列去除重複 uniq

Linux 命令列去除重複 uniq

一,uniq幹什麼用的

文字中的重複行,基本上不是我們所要的,所以就要去除掉。linux下有其他命令可以去除重複行,但是我覺得uniq還是比較方便的一個。使用uniq的時候要注意以下二點

1,對文字操作時,它一般會和sort命令進行組合使用,因為uniq 不會檢查重複的行,除非它們是相鄰的行。如果您想先對輸入排序,使用sort -u。

2,對文字操作時,若域中為先空字元(通常包括空格以及製表符),然後非空字元,域中字元前的空字元將被跳過

二,uniq引數說明

檢視複製列印?
  1. [[email protected] ~]$ uniq --help  
  2. 用法:uniq [選項]... [檔案]  
  3. 從輸入檔案或者標準輸入中篩選相鄰的匹配行並寫入到輸出檔案或標準輸出。  
  4. 不附加任何選項時匹配行將在首次出現處被合併。  
  5. 長選項必須使用的引數對於短選項時也是必需使用的。  
  6.  -c, --count//在每行前加上表示相應行目出現次數的字首編號
  7.  -d, --repeated          //只輸出重複的行
  8.  -D, --all-repeated      //只輸出重複的行,不過有幾行輸出幾行
  9.  -f, --skip-fields=N     //-f 忽略的段數,-f 1 忽略第一段
  10.  -i, --ignore-case//不區分大小寫
  11.  -s, --skip-chars=N      //根-f有點像,不過-s是忽略,後面多少個字元 -s 5就忽略後面5個字元
  12.  -u, --unique            //去除重複的後,全部顯示出來,根mysql的distinct功能上有點像
  13.  -z, --zero-terminated   end lines with 0 byte, not newline  
  14.  -w, --check-chars=N      //對每行第N 個字元以後的內容不作對照
  15.  --help              //顯示此幫助資訊並退出
  16.  --version              //顯示版本資訊並退出

其中-z不知道有什麼用

三,測試文字檔案uniqtest

  1. this is a test  
  2. this is a test  
  3. this is a test  
  4. i am tank  
  5. i love tank  
  6. i love tank  
  7. this is a test  
  8. whom have a try  
  9. WhoM have a try  
  10. you  have a try  
  11. i want to abroad  
  12. those are good men  
  13. we are good men  

四,例項詳解

檢視複製列印?
  1. [[email protected] mytest]$ uniq -c uniqtest  
  2.  3 this is a test  
  3.  1 i am tank  
  4.  2 i love tank  
  5.  1 this is a test           //和第一行是重複的
  6.  1 whom have a try  
  7.  1 WhoM have a try  
  8.  1 you  have a try  
  9.  1 i want to abroad  
  10.  1 those are good men  
  11.  1 we are good men  

從上例子中我們可以看出,uniq的一個特性,檢查重複行的時候,只會檢查相鄰的行。重複資料,肯定有很多不是相鄰在一起的。

  1. [[email protected] mytest]$ sort uniqtest |uniq -c  
  2.  1 WhoM have a try  
  3.  1 i am tank  
  4.  2 i love tank  
  5.  1 i want to abroad  
  6.  4 this is a test  
  7.  1 those are good men  
  8.  1 we are good men  
  9.  1 whom have a try  
  10.  1 you  have a try  

這樣就可以解決上個例子中提到的問題

  1. [[email protected] mytest]$ uniq -d -c uniqtest  
  2.  3 this is a test  
  3.  2 i love tank  

uniq -d 只顯示重複的行

  1. [[email protected] mytest]$ uniq -D uniqtest  
  2. this is a test  
  3. this is a test  
  4. this is a test  
  5. i love tank  
  6. i love tank  

uniq -D 只顯示重複的行,並且把重複幾行都顯示出來。他不能和-c一起使用

檢視複製列印?
  1. [[email protected] mytest]$ uniq -f 1 -c uniqtest  
  2.  3 this is a test  
  3.  1 i am tank  
  4.  2 i love tank  
  5.  1 this is a test  
  6.  2 whom have a try  
  7.  1 you  have a try  
  8.  1 i want to abroad  
  9.  2 those are good men   //只有一行,顯示二行

在這裡those只有一行,顯示的卻是重複了,這是因為,-f 1 忽略了第一列,檢查重複從第二欄位開始的。

檢視複製列印?
  1. [[email protected] mytest]$ uniq -i -c uniqtest  
  2.  3 this is a test  
  3.  1 i am tank  
  4.  2 i love tank  
  5.  1 this is a test  
  6.  2 whom have a try  //一個大寫,一個小寫
  7.  1 you  have a try  
  8.  1 i want to abroad  
  9.  1 those are good men  
  10.  1 we are good men  

檢查的時候,不區分大小寫

檢視複製列印?
  1. [[email protected] mytest]$ uniq -s 4 -c uniqtest  
  2. 3 this is a test  
  3. 1 i am tank  
  4. 2 i love tank  
  5. 1 this is a test  
  6. 3 whom have a try   //根上一個例子有什麼不同
  7. 1 i want to abroad  
  8. 1 those are good men  
  9. 1 we are good men  

檢查的時候,不考慮前4個字元,這樣whom have a try 就和 you have a try 就一樣了。

  1. [[email protected] mytest]$ uniq -u uniqtest  
  2. i am tank  
  3. this is a test  
  4. whom have a try  
  5. WhoM have a try  
  6. you  have a try  
  7. i want to abroad  
  8. those are good men  
  9. we are good men  

去重複的項,然後全部顯示出來

  1. [[email protected] mytest]$ uniq -w 2 -c uniqtest  
  2.  3 this is a test  
  3.  3 i am tank  
  4.  1 this is a test  
  5.  1 whom have a try  
  6.  1 WhoM have a try  
  7.  1 you  have a try  
  8.  1 i want to abroad  
  9.  1 those are good men  
  10.  1 we are good men  

對每行第2個字元以後的內容不作檢查,所以i am tank 根 i love tank就一樣了。

相關推薦

Linux 命令去除重複 uniq

一,uniq幹什麼用的 文字中的重複行,基本上不是我們所要的,所以就要去除掉。linux下有其他命令可以去除重複行,但是我覺得uniq還是比較方便的一個。使用uniq的時候要注意以下二點 1,對文字操作時,它一般會和sort命令進行組合使用,因為uniq 不會檢查重複

linux命令學習

awk ~ 匹配符 在pattern部分進行欄位匹配操作。文中包含bin的很多,但要找到以:分割後,第五個匹配bin的使用者名稱,相當於用:將每行分割成陣列,索引5值匹配,則將第一個打印出來 awk -F: '$5 ~ /bin/{print $1}' /etc/passwd awk NR條件語

如何在Linux 命令終端分屏

下面介紹兩種終端分屏工具:screen和tmux   一、使用screen分屏(只能上下分屏,不能左右分屏) (1)安裝工具 在ubuntu系統中使用sudo apt-get install screen 安裝screen工具 (2)使用工具 1,輸入命令scree

RF工具自定義linux命令命令執行程式碼及資料庫訪問

之前寫了幾次資料庫連線和linux命令列執行的程式碼,在此儲存下。 另考慮到python2的中文編碼問題,註釋等都用簡單英文,見諒~  import paramiko class Excsshcmd(): ssh = paramiko.SSHClient()

Linux 命令中使用 tcpdump 抓包

tcpdump 是一款靈活、功能強大的抓包工具,能有效地幫助排查網路故障問題。 以我作為管理員的經驗,在網路連線中經常遇到十分難以排查的故障問題。對於這類情況,tcpdump 便能派上用場。 tcpdump 是一個命令列實用工具,允許你抓取和分析經過系統的流量資料包。它通常被用作於網路故障分析工具以及安全

Linux命令使用matplotlib,報錯_tkinter.TclError: no display name and no $DISPLAY environment variable問題解決

問題 我在Linux命令列使用Python的matplotlib,報錯 File "/usr/lib/python3/dist-packages/matplotlib/pyplot.py", line 1466, in title return gca().set_titl

服務計算 - 3 Golang開發Linux命令實用程式 - selpg

文章目錄 Golang開發Linux命令列實用程式 - selpg 1. 介紹 2. 設計與實現 2.1 設計思路 2.2 功能模組劃分與實現 4 參考文獻

Linux命令內容

    命令列內容: 一般模式 移動游標 【ctrl】+【f】 螢幕【向前】移動一頁 【ctrl】+【b】 螢幕【向後】移動一頁 0 這是數字0:移動到這一行的最前面字元處

mongodb linux 命令部分命令

shell相關命令 輸入help可以看到基本操作命令: 連線 ./mongo --port 8000 --host 10.130.161.16   第二種連線方式 mongo IP:埠/資料庫名 -u 使用者名稱 -p 密碼   退出 exit

linux-命令快捷方式使用

CTRL+P   命令向上翻滾 CTRL+N   命令向下翻滾 CTRL+U  命令列中刪除游標前面的所有字元 CTRL+D  命令列中刪除游標後面的一個字元 CTRL+H  命令列中刪除游標前面的一個字元 CTRL+F  命令列中游標向後移動 CTRL+B  命令列中游標向前移動 C

服務計算3 開發 Linux 命令實用程式

文章目錄 概述 1.解析引數 2.命令列的'<','>','|'符號 3.執行命令列的命令 4.總結 概述 本次作業參考潘老師的部落格 https://pmlpml.github.io/ServiceComput

Linux命令與shell指令碼程式設計大全(二)

十一、處理使用者輸入 命令列引數 讀取引數: $0是程式名,$1是第一個引數,$2是第二個引數,以此類推,直到第9個引數$9。當引數個數超過10以後,需要在變數數字周圍加上花括號,如${10},如果輸入到命令列的引數是字串且含有空格,需要使用引號。 #! /bin/bash echo

Linux命令與shell指令碼程式設計大全(一)

一、基本 bash shell命令 建立檔案 : touch 連結檔案:符號連結:是一個實實在在的檔案,兩個通過符號連結在一起的檔案,彼此的內容並不相同。使用ln -s命令。 硬連結:會建立獨立的虛擬檔案,其中包含了原始檔案的資訊及位置。但他們從根本上而言是同一個檔案。原始檔案必須事

Linux命令與shell指令碼程式設計大全(三)

十二、呈現資料 輸入和輸出     標準檔案描述符                  0 STDIN 標準輸入   &n

linux 命令不顯示路徑了,而顯示為-bash-4.1#的兩種解決辦法

問題描述: linux的命令列介面顯示的不是路徑,而是-bash-4.1#: 原因分析: 出現這個問題的原因是因為沒有配置.bash_profile的問題,或者是我們不小心清空或刪除了.bash_profile檔案。 解決方法 方法一:修改 ~/.bash_profile檔案 1、修改~/.bas

Linux命令翻譯工具

一、背景 經常在linux命令列下有些單詞不認識,複製出來通過翻譯軟體很不方便,如果有個命令列翻譯就比較舒服了。通過下面shell指令碼可以在/usr/bin/yd建立yd命令來進行快速命令列翻譯。 二、程式碼 git地址 #!/bin/bash # # CMD=/usr/bin/yd cat

Linux 命令關閉開啟顯示器及xset: unable to open display ""解決方法

在遠端連線Linux等時,基本用不到顯示器,所以希望能遠端將顯示屏關閉 xset -display :0.0 dpms force off這個命令讓顯示屏進入休眠狀態 xset -display :0.0 dpms force on開啟顯示屏 sleep 1 && xse

在Windows環境下學習Linux命令的幾種方法

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

Linux命令與shell指令碼程式設計大全》讀書筆記————第三章 基本的bash shell命令

本章內容 1、使用shell 2、bash手冊 3、瀏覽檔案系統 4、檔案和目錄列表 5、管理檔案和目錄 6、檢視檔案內容   3.3 bash手冊 命令: man  xterm  作用:檢視檢視xterm使用者手冊 man命

Linux命令與shell指令碼程式設計大全》讀書筆記————第一章 初識Linux shell

本章內容 1、什麼是Linux 2、Linux核心的組成   1、1 什麼是Linux Linux課劃分為以下四部分 a)Linux核心 b)GNU工具 c)圖形化桌面環境 d)應用軟體   1.1.1 深入探究Linux核心