本次我們來學習一下uniq shell
命令,wiki見這裡:
;wiki的結果比較簡單,我們可以直接在系統上先man一下看下結果:
uniq - report or omit repeated lines
這個摘要很有一下,注意是report or omit,也就是說既能顯示某些資訊,也能忽略某些資訊,後者出現在我們頭腦的機會貌似要少一些。還有一點要注意的是,這個命令是對輸入行進行操作,也就是行操作,這點在使用前就要有概念。
uniq函式能夠從輸入判斷連續的行是否是unique的,同時把結果輸出,可以是標準輸出,也可以是檔案。
uniq支援引數,其中主要的引數包括:
-c:列印出現的行數-d:列印重複行
-f:跳過比較前面的n個域(field)
-i:忽略大小寫
-s:跳過比較前面的n的字元(character)
-u:列印唯一行
-w:每行檢查的字幕不超過n
uniq
的主要功能就這麼多,下面我們通過例子來驗證一下:
我們使用檔案corpus.txt,檔案內容特意處理過,盡可能使用uniq的這些特性:
>>cat corpus.txthadoop
dfsdfsl
hbase
memcache
sqlsql
sqlmemcache
memcache
hbase
hadoop
hadoop
hive
hive
sqlsql
bigbig
bigbig
hbase
apache
apache
apache
-c引數能夠顯示出單詞出現的次數
>>cat corpus.txt | uniq -c-i引數不區分大小寫,顯示遇見的第一行, 如下面的sql和apache顯示1 hadoop
1 dfs
1 dfsl
1 hbase
1 memcache
1 sql
1 sql
1 sql
1 memcache
1 memcache
1 hbase
1 hadoop
1 hadoop
1 hive
1 hive
2 sql
2 big
1 big
1 big
1 hbase
1 apache
1 apache
1 apache
>>cat corpus.txt | uniq -ci-d引數顯示出出現次數大於1的行1 hadoop
1 dfs
1 dfsl
1 hbase
1 memcache
3 sql
2 memcache
1 hbase
2 hadoop
2 hive
2 sql
4 big
1 hbase
3 apache
>>cat corpus.txt | uniq -cid3 sql
2 memcache
2 hadoop
2 hive
2 sql
4 big
3 apache
-u引數顯示只出現過一次的行
>>cat corpus.txt | uniq -ciu1 hadoop
1 dfs
1 dfsl
1 hbase
1 memcache
1 hbase
1 hbase
-s引數表示從第n個字元開始統計,下面例子表示從第乙個字元開始統計,即忽略首字元,看最後apache的輸出
>>cat corpus.txt | uniq -c -s 1-w引數表示只比較n個字元,這裡只比較兩個字元,可以觀察下dfs的輸出。1 hadoop
1 dfs
1 dfsl
1 hbase
1 memcache
2 sql
1 sql
1 memcache
1 memcache
1 hbase
1 hadoop
1 hadoop
2 hive
2 sql
2 big
1 big
1 big
1 hbase
1 apache
2 apache
>>cat corpus.txt | uniq -c -s 1 -w 21 hadoop
2 dfs
1 hbase
1 memcache
2 sql
1 sql
1 memcache
1 memcache
1 hbase
1 hadoop
1 hadoop
2 hive
2 sql
2 big
1 big
1 big
1 hbase
1 apache
2 apache
uniq
的主要命令就是這些,還有個-f引數大家可以自行參考下官網,uniq的命令看起來不是特別強大,但是和sort一起使用會發揮出巨大的能量,大家可以先行學習下sort的功能,下次我們再來學習sort命令
Linux的uniq命令詳解
linux命令uniq的作用是過濾重複部分顯示檔案內容,這個命令讀取輸入檔案,並比較相鄰的行。在正常情況下,第二個及以後更多個重複行將被刪去,行比較是根據所用字符集的排序序列進行的。該命令加工後的結果寫到輸出檔案中。輸入檔案和輸出檔案必須不同。如果輸入檔案用 表示,則從標準輸入讀取。uniq 選項 ...
linux之uniq 命令詳解
linux uniq 命令用於檢查及刪除文字檔案中重複出現的行列,一般與 sort 命令結合使用。uniq 可檢查文字檔案中重複出現的行列。語法 uniq cdu f 字段 s 字元位置 w 字元位置 help version 輸入檔案 輸出檔案 引數 檔案testfile中第 2 3 5 6 7 ...
Linux的uniq命令詳解
uniq命令可以去除排序過的檔案中的重複行,因此uniq經常和sort合用。也就是說,為了使uniq起作用,所有的重複行必須是相鄰的。選項與引數 i 忽略大小寫字元的不同 c 進行計數 u 只顯示唯一的行 d 只顯示重複的行 排序後刪除重複的行 cat words sort uniq 排序之後刪除了...