linux uniq命令用法

2022-04-21 09:46:20 字數 4303 閱讀 3524

uniq命令:

對指定的ascii檔案或標準輸入進行唯一性檢查,以判斷文字檔案中重複出現的行,常用於分析日誌;檢視tcp各個狀態連線數,ip或網域名稱連線數排名等等場景,一般與 sort 命令結合使用。

命令格式:

uniq [選項]... [檔案1] [檔案2]

uniq從已經排好序的文字檔案file1中刪除重複的行,輸出到標準輸出或file2,常作為過濾器,配合管道試壓。在使用uniq命令前,必須確保操作的文字檔案已經sort排序了,若不帶引數執行uniq,將刪除重複的行。

常見引數:

[root@bqh-118 ~]# uniq --help

用法:uniq [選項]... [檔案]

從輸入檔案或者標準輸入中篩選相鄰的匹配行並寫入到輸出檔案或標準輸出。

不附加任何選項時匹配行將在首次出現處被合併。

長選項必須使用的引數對於短選項時也是必需使用的。

-c, --count 在每行前加上表示相應行目出現次數的字首編號

-d, --repeated 只輸出重複的行,2次或2次以上的。

-d, --all-repeated[=delimit-method 顯示所有重複的行

delimit-method=

以空行為界限

-f, --skip-fields=n 比較時跳過前n 列

-i, --ignore-case 在比較的時候不區分大小寫

-s, --skip-chars=n 比較時跳過前n 個字元

-u, --unique 只顯示唯一的行

-z, --zero-terminated 使用'\0'作為行結束符,而不是新換行

-w, --check-chars=n 對每行第n 個字元以後的內容不作對照

--help 顯示此幫助資訊並退出

--version 顯示版本資訊並退出

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

uniq 不會檢查重複的行,除非它們是相鄰的行。

如果您想先對輸入排序,使用沒有uniq 的"sort -u"。

測試:不加引數只對相鄰的相同行內容去重

[root@bqh-118 ~]# cat qc.log

192.168.43.117

192.168.43.119

192.168.43.118

192.168.43.118

192.168.43.117

192.168.43.117

192.168.43.119

192.168.43.110

[root@bqh-118 ~]# uniq qc.log

192.168.43.117

192.168.43.119

192.168.43.118

192.168.43.117

192.168.43.119

192.168.43.110

通過sort讓重複的行相鄰:

[root@bqh-118 ~]# sort qc.log 

192.168.43.110

192.168.43.117

192.168.43.117

192.168.43.117

192.168.43.118

192.168.43.118

192.168.43.119

192.168.43.119

uniq配合sort來去重:

[root@bqh-118 ~]# sort qc.log |uniq

192.168.43.110

192.168.43.117

192.168.43.118

192.168.43.119

[root@bqh-118 ~]# sort -u qc.log

192.168.43.110

192.168.43.117

192.168.43.118

192.168.43.119

當然我們也可以通sort -u file實現去重

去重計數:

[root@bqh-118 ~]# sort qc.log |uniq -c

1 192.168.43.110

3 192.168.43.117

2 192.168.43.118

2 192.168.43.119

[root@bqh-118 ~]# sort qc.log

192.168.43.110

192.168.43.117

192.168.43.117

192.168.43.117

192.168.43.118

192.168.43.118

192.168.43.119

192.168.43.119

檢視重複的項:

[root@bqh-118 ~]# sort qc.log |uniq -d

192.168.43.117

192.168.43.118

192.168.43.119

檢視所有重複的項:

[root@bqh-118 ~]# sort qc.log |uniq -d

192.168.43.117

192.168.43.117

192.168.43.117

192.168.43.118

192.168.43.118

192.168.43.119

192.168.43.119

不區分大小寫,去除重複的項:

[root@bqh-118 ~]# cat qc1.log 

banan

banan

grape

orange

orange

bqh jyw

bqh1 jyw

[root@bqh-118 ~]# uniq -i qc1.log

banan

grape

orange

bqh jyw

bqh1 jyw

跳過第一列:

[root@bqh-118 ~]# uniq -f1 qc1.log 

bqh jyw

bqh1 jyw

跳過每行的第乙個字元:

[root@bqh-118 ~]# uniq -s1 qc1.log 

banan

banan

grape

orange

bqh jyw

bqh1 jyw

案例:處理一下qc2.log檔案內容,將網域名稱取出來並根據網域名稱進行計數排序處理。

方法二:cut方法

當然還有其它方法,在這裡就簡單介紹一下常用的方法。

linux uniq命令用法

linux uniq命令用法 接下來通過實踐例項說明 root stu100 cat test boy took bat home boy took bat home girl took bat home boy took bat home boy took bat home dog brought...

linux uniq命令詳解

linux uniq命令詳解 用uniq命令可以刪除相鄰的重複行 uniq file 但如果一文字中有重複卻不相鄰的行則無法刪除,需要結合sort命令 sort file uniq 等效的sort命令是 sort u file 另外uniq命令有4個有用的選項 uniq d file 只輸出file...

linux uniq 命令詳解

uniq 命令 文字 uniq 是linux命令 用途 報告或刪除檔案中重複的行。語法 uniq c d u f fields s characters fields characters infile outfile 描述 uniq 命令刪除檔案中的重複行。uniq 命令讀取由 infile 引數...