【Linux工具篇】文本去重工具uniq

簡述

用途app

報告或刪除文件中重複的行。

語法ui

uniq [ -c | -d | -u ] [ -f Fields ] [ -s Characters ] [ -Fields ] [ +Characters ] [ InFile [ OutFile ] ]

描述code

uniq 命令刪除文件中的重複行。排序

uniq 命令讀取由 InFile 參數指定的標準輸入或文件。該命令首先比較相鄰的行,而後除去第二行和該行的後續副本。重複的行必定相鄰。(在發出 uniq 命令以前,請使用 sort 命令使全部重複行相鄰。)最後,uniq 命令將最終單獨的行寫入標準輸出或由 OutFile 參數指定的文件。InFile 和 OutFile 參數必須指定不一樣的文件。若是輸入文件用「- 」表示,則從標準輸入讀取;輸入文件必須是文本文件。文本文件是包含組織在一行或多行中的字符的文件。這些行的長度不能超出 2048 個字節(包含全部換行字符),而且其中不能包含空字符。字符串

缺省狀況下,uniq 命令比較全部行。若是指定了-f Fields 或 -Fields 標誌, uniq 命令忽略由 Fields 變量指定的字段數目。 field 是一個字符串,用一個或多個 <空格 > 字符將它與其它字符串分隔開。
若是指定了 -s Characters 或 -Characters 標誌, uniq 命令忽略由 Characters 變量指定的字段數目。爲 Fields 和 Characters 變量指定的值必須是正的十進制整數。it

當前本地語言環境決定了 -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 發生錯誤。sort

補充語言

文件通過處理後在它的輸出文件中可能會出現重複的行。例如,使用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
相關文章
相關標籤/搜索