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.log192.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.log192.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 |uniq192.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 -c1 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 -d192.168.43.117
192.168.43.118
192.168.43.119
檢視所有重複的項:
[root@bqh-118 ~]# sort qc.log |uniq -d192.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.logbanan
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.logbqh jyw
bqh1 jyw
跳過每行的第乙個字元:
[root@bqh-118 ~]# uniq -s1 qc1.logbanan
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 引數...