Linux命令詳解 Uniq

2021-09-01 14:40:26 字數 2856 閱讀 1991

本次我們來學習一下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.txt

hadoop

dfsdfsl

hbase

memcache

sqlsql

sqlmemcache

memcache

hbase

hadoop

hadoop

hive

hive

sqlsql

bigbig

bigbig

hbase

apache

apache

apache

-c引數能夠顯示出單詞出現的次數

>>cat corpus.txt | uniq -c

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

-i引數不區分大小寫,顯示遇見的第一行, 如下面的sql和apache顯示

>>cat corpus.txt | uniq -ci

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

-d引數顯示出出現次數大於1的行

>>cat corpus.txt | uniq -cid

3 sql

2 memcache

2 hadoop

2 hive

2 sql

4 big

3 apache

-u引數顯示只出現過一次的行

>>cat corpus.txt | uniq -ciu

1 hadoop

1 dfs

1 dfsl

1 hbase

1 memcache

1 hbase

1 hbase

-s引數表示從第n個字元開始統計,下面例子表示從第乙個字元開始統計,即忽略首字元,看最後apache的輸出

>>cat corpus.txt | uniq   -c -s 1

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

-w引數表示只比較n個字元,這裡只比較兩個字元,可以觀察下dfs的輸出。

>>cat corpus.txt | uniq  -c  -s 1 -w 2 

1 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 排序之後刪除了...