linux uniq命令詳解
uniq命令是linux系統(tǒng)下的一個(gè)命令。那么它的具體用法是怎樣的呢?下面由學(xué)習(xí)啦小編為大家整理了linux uniq命令的相關(guān)知識(shí),希望對(duì)大家有幫助!
linux uniq命令說明
uniq是LINUX命令
linux uniq命令用途
報(bào)告或刪除文件中重復(fù)的行。
linux uniq命令語(yǔ)法
uniq [ -c | -d | -u ] [ -f Fields ] [ -s Characters ] [ -Fields ] [ +Characters ] [ InFile [ OutFile ] ]
linux uniq命令描述
uniq 命令刪除文件中的重復(fù)行。
uniq 命令讀取由 InFile 參數(shù)指定的標(biāo)準(zhǔn)輸入或文件。該命令首先比較相鄰的行,然后除去第二行和該行的后續(xù)副本。重復(fù)的行一定相鄰。(在發(fā)出 uniq 命令之前,請(qǐng)使用 sort 命令使所有重復(fù)行相鄰。)最后,uniq 命令將最終單獨(dú)的行寫入標(biāo)準(zhǔn)輸出或由 OutFile 參數(shù)指定的文件。InFile 和 OutFile 參數(shù)必須指定不同的文件。如果輸入文件用“- ”表示,則從標(biāo)準(zhǔn)輸入讀取;輸入文件必須是文本文件。文本文件是包含組織在一行或多行中的字符的文件。這些行的長(zhǎng)度不能超出 2048 個(gè)字節(jié)(包含所有換行字符),并且其中不能包含空字符。
缺省情況下,uniq 命令比較所有行。如果指定了-f Fields 或 -Fields 標(biāo)志, uniq 命令忽略由 Fields 變量指定的字段數(shù)目。 field 是一個(gè)字符串,用一個(gè)或多個(gè) <空格 > 字符將它與其它字符串分隔開。
如果指定了 -s Characters 或 -Characters 標(biāo)志, uniq 命令忽略由 Characters 變量指定的字段數(shù)目。為 Fields 和 Characters 變量指定的值必須是正的十進(jìn)制整數(shù)。
當(dāng)前本地語(yǔ)言環(huán)境決定了 -f 標(biāo)志使用的 <空白> 字符以及 -s 標(biāo)志如何將字節(jié)解釋成字符。
如果執(zhí)行成功,uniq 命令退出,返回值 0。否則,命令退出返回值大于 0。
linux uniq命令標(biāo)志
-c 在輸出行前面加上每行在輸入文件中出現(xiàn)的次數(shù)。
-d 僅顯示重復(fù)行。
-u 僅顯示不重復(fù)的行。
-f Fields 忽略由 Fields 變量指定的字段數(shù)目。如果 Fields 變量的值超過輸入行中的字段數(shù)目, uniq 命令用空字符串進(jìn)行比較。這個(gè)標(biāo)志和 -Fields 標(biāo)志是等價(jià)的。
-s Characters 忽略由 Characters 變量指定的字符的數(shù)目。如果 Characters 變量的值超過輸入行中的字符的數(shù)目, uniq 用空字符串進(jìn)行比較。如果同時(shí)指定 -f 和 -s 標(biāo)志, uniq 命令忽略由 -s Characters 標(biāo)志指定的字符的數(shù)目,而從由 -f Fields 標(biāo)志指定的字段后開始。 這個(gè)標(biāo)志和 +Characters 標(biāo)志是等價(jià)的。
-Fields 忽略由 Fields 變量指定的字段數(shù)目。這個(gè)標(biāo)志和 -f Fields 標(biāo)志是等價(jià)的。
+Characters 忽略由 Characters 變量指定的字符的數(shù)目。如果同時(shí)指定 - Fields 和 +Characters 標(biāo)志, uniq 命令忽略由 +Characters 標(biāo)志指定的字符數(shù)目,并從由 -Fields 標(biāo)志指定的字段后開始。 這個(gè)標(biāo)志和 -s Characters 標(biāo)志是等價(jià)的。
- c 顯示輸出中,在每行行首加上本行在文件中出現(xiàn)的次數(shù)。它可取代- u和- d選項(xiàng)。
- d 只顯示重復(fù)行 。
- u 只顯示文件中不重復(fù)的各行 。
- n 前n個(gè)字段與每個(gè)字段前的空白一起被忽略。一個(gè)字段是一個(gè)非空格、非制表符的字符串,彼此由制表符和空格隔開(字段從0開始編號(hào))。
+ n 前n個(gè)字符被忽略,之前的字符被跳過(字符從0開始編號(hào))。
- f n 與- n相同,這里n是字段數(shù)。
- s n 與+n相同,這里n是字符數(shù)。
linux uniq命令退出狀態(tài)
該命令返回以下退出值:
0 命令運(yùn)行成功。
>0 發(fā)生錯(cuò)誤。
補(bǔ)充
文件經(jīng)過處理后在它的輸出文件中可能會(huì)出現(xiàn)重復(fù)的行。例如,使用cat命令將兩個(gè)文件合并后,再使用sort命令進(jìn)行排序,就可能出現(xiàn)重復(fù)行。這時(shí)可以使用uniq命令將這些重復(fù)行從輸出文件中刪除,只留下每條記錄的唯一樣
linux uniq命令示例
要?jiǎng)h除名為 fruit 文件中的重復(fù)行并將其保存到一個(gè)名為 newfruit 的文件中,輸入:
uniq fruit newfruit
如果 fruit 文件包含下列行:
apples
apples
peaches
pears
bananas
cherries
cherries
則在您運(yùn)行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
1. 顯示文件example中不重復(fù)的行。
uniq - u example
2. 顯示文件example中不重復(fù)的行,從第2個(gè)字段的第2個(gè)字符開始做比較。
uniq - u - 1 +1 example