## 簡述
**用途**
> 報告或刪除文件中重復的行。
**語法**
uniq [ -c | -d | -u ] [ -f Fields ] [ -s Characters ] [ -Fields ] [ +Characters ] [ InFile [ OutFile ] ]
**描述**
uniq 命令刪除文件中的重復行。
uniq 命令讀取由 InFile 參數指定的標準輸入或文件。該命令首先比較相鄰的行,然后除去第二行和該行的后續副本。重復的行一定相鄰。(**在發出 uniq 命令之前,請使用 sort 命令使所有重復行相鄰。**)最后,uniq 命令將最終單獨的行寫入標準輸出或由 OutFile 參數指定的文件。InFile 和 OutFile 參數必須指定不同的文件。如果輸入文件用“- ”表示,則從標準輸入讀取;輸入文件必須是文本文件。文本文件是包含組織在一行或多行中的字符的文件。這些行的長度不能超出 2048 個字節(包含所有換行字符),并且其中不能包含空字符。
缺省情況下,uniq 命令比較所有行。如果指定了-f Fields 或 -Fields 標志, uniq 命令忽略由 Fields 變量指定的字段數目。 field 是一個字符串,用一個或多個 <空格 > 字符將它與其它字符串分隔開。
如果指定了 -s Characters 或 -Characters 標志, uniq 命令忽略由 Characters 變量指定的字段數目。為 Fields 和 Characters 變量指定的值必須是正的十進制整數。
當前本地語言環境決定了 -f 標志使用的 <空白> 字符以及 -s 標志如何將字節解釋成字符。
如果執行成功,uniq 命令退出,返回值 0。否則,命令退出返回值大于 0。
## 參數說明
-c 去重復的同時在輸出行前面加上每行在輸入文件中出現的次數。
-d 僅顯示重復行。
-u 僅顯示不重復的行。
-f Fields 忽略由 Fields 變量指定的字段數目。如果 Fields 變量的值超過輸入行中的字段數目, uniq 命令用空字符串進行比較。這個標志和 -Fields 標志是等價的。
-s Characters 忽略由 Characters 變量指定的字符的數目。如果 Characters 變量的值超過輸入行中的字符的數目, uniq 用空字符串進行比較。如果同時指定 -f 和 -s 標志, uniq 命令忽略由 -s Characters 標志指定的字符的數目,而從由 -f Fields 標志指定的字段后開始。 這個標志和 +Characters 標志是等價的。
-Fields 忽略由 Fields 變量指定的字段數目。這個標志和 -f Fields 標志是等價的。
+Characters 忽略由 Characters 變量指定的字符的數目。如果同時指定 - Fields 和 +Characters 標志, uniq 命令忽略由 +Characters 標志指定的字符數目,并從由 -Fields 標志指定的字段后開始。 這個標志和 -s Characters 標志是等價的。
- c 顯示輸出中,在每行行首加上本行在文件中出現的次數。它可取代- u和- d選項。
- d 只顯示重復行 。
- u 只顯示文件中不重復的各行 。
- n 前n個字段與每個字段前的空白一起被忽略。一個字段是一個非空格、非制表符的字符串,彼此由制表符和空格隔開(字段從0開始編號)。
+ n 前n個字符被忽略,之前的字符被跳過(字符從0開始編號)。
- f n 與- n相同,這里n是字段數。
- s n 與+n相同,這里n是字符數。
退出狀態
該命令返回以下退出值:
0 命令運行成功。
\> 0 發生錯誤。
**補充**
文件經過處理后在它的輸出文件中可能會出現重復的行。例如,使用cat命令將兩個文件合并后,再使用sort命令進行排序,就可能出現重復行。這時可以使用uniq命令將這些重復行從輸出文件中刪除,只留下每條記錄的唯一樣
**示例**
```
# 要刪除名為 fruit 文件中的重復行并將其保存到一個名為 newfruit 的文件中,輸入:
uniq fruit newfruit
# 如果 fruit 文件包含下列行:
apples
apples
peaches
pears
bananas
cherries
cherries
# 則在您運行uniq 命令后 newfruit 文件將包含下列行:
apples
peaches
pears
bananas
cherries
文件/usr/bin/uniq 包含 uniq 命令。
```
```
# uniq -c 的用法,例如:
harley
casely
weedly
harley
linda
# cut -c 1-8 | sort | uniq -c > result.txt
1 casely
2 harley
1 linda
1 weekly
```
```
# 顯示文件example中不重復的行。
uniq - u example
# 顯示文件example中不重復的行,從第2個字段的第2個字符開始做比較。
uniq - u - 1 +1 example
```
- Apache
- 【Apache運維基礎(1)】Apache的安裝與使用
- 【Apache運維基礎(2)】主配置文件說明
- 【Apache運維基礎(3)】虛擬主機配置說明
- 【Apache運維基礎(4)】Apache的Rewrite攻略(1)
- 【Apache運維基礎(5)】Apache的Rewrite攻略(2).htaccess文件
- 【Apache運維基礎(6)】Apache的日志管理與分析
- 工具篇
- supervisor進程管理器
- Haproxy安裝與配置
- Nginx
- 【nginx網站性能優化篇(1)】gzip壓縮與expire瀏覽器緩存
- 【nginx網站性能優化篇(2)】反向代理實現Apache與Nginx的動靜分離(LNMPA)
- 【nginx網站性能優化篇(3)】反向代理實現負載均衡
- 【nginx網站性能優化篇(4)】理解nginx的高并發原理及其配置調優
- 【nginx運維基礎(1)】Nginx的編譯安裝與使用
- 【nginx運維基礎(2)】Nginx的配置文件說明及虛擬主機配置示例
- 【nginx運維基礎(3)】Nginx的編譯PHP
- 【nginx運維基礎(4)】Nginx的日志管理(日志格式與定時分割日志)
- 【nginx運維基礎(5)】Nginx的location攻略
- 【nginx運維基礎(6)】Nginx的Rewrite語法詳解
- 【nginx運維基礎(7)】配置SSL支持https訪問
- 【nginx運維基礎(8)】配置支持http2協議
- 【nginx運維基礎(9)】了解PHP-FPM 與 Nginx 的通信機制
- 其它
- Apache與Nginx下php隱藏http頭部版本信息的實現方法
- CURL與PHP-CLI的應用【CLI篇】
- CURL與PHP-CLI的應用【Curl篇】
- Linux之SAMBA共享服務
- 【Linux常識篇(1)】所謂的正向代理與反向代理
- 【Linux常識篇(2)】理解inode
- 【Linux常識篇(3)】文件及文件夾的ctime atime mtime的含義詳解
- centOS使用手記
- 服務器日志分析
- 高頻命令
- df
- mv
- gzip
- cp
- tar
- touch
- cat
- uniq
- nl
- more
- rmdir
- less
- mkdir
- head
- rm
- tail
- 五大查詢命令
- vi&vim
- ls與目錄結構
- grep
- awk
- sed
- 其他高頻命令