轉:http://www.justwinit.cn/post/3671/
特別注意:
用uniq命令可以刪除相鄰的重復行:
uniq [file]
但如果一文本中有重復卻不相鄰的行則無法刪除,需要結合sort命令:
sort [file]|uniq
等效的sort命令是:
sort -u [file]
=========================================
去重復后統計:
原來的行數:
重復行和重復多少次:
你也可以按照列來排序:
sort -k2nr
sort如何按指定的列排序
0000 27189 41925425
065f 15 41925425
0663 7 41925425
0675 5 41925425
0691 76 41925425
0693 2 41925425
06a7 82 41925425
06a9 58 41925425
06bf 68 41925425
06c1 56 41925425
06d7 145 41925425
06e1 127 41925425
06e3 230 41925425
06e5 7 41925425
06ef 48 41925425
06f1 463 41925425
06ff 3847 41925425
070b 2376 41925425
070d 3408 41925425
0713 109025 41925425
0715 4 41925425
0726 134 41925425
我想按第二列值進行排序,從大到小的順序。
0713 109025 41925425
0000 27189 41925425
06ff 3847 41925425
070d 3408 41925425
070b 2376 41925425
06f1 463 41925425
06e3 230 41925425
06d7 145 41925425
0726 134 41925425
06e1 127 41925425
06a7 82 41925425
0691 76 41925425
06bf 68 41925425
06a9 58 41925425
06c1 56 41925425
06ef 48 41925425
065f 15 41925425
0663 7 41925425
06e5 7 41925425
0675 5 41925425
0715 4 41925425
0693 2 41925425
作者: Songs 出自: http://www.linuxdiyf.com
uniq命令的作用:顯示唯一的行,對於那些連續重復的行只顯示一次!
接下來通過實踐實例說明:
[root@stu100 ~]# cat test
boy took bat home
boy took bat home
girl took bat home
dog brought hat home
dog brought hat home
dog brought hat home
看test文件的內容,可以看到其中的連續重復行
[root@stu100 ~]# uniq test
boy took bat home
girl took bat home
dog brought hat home
uniq命令不加任何參數,僅顯示連續重復的行一次
[root@stu100 ~]# uniq -c test
2 boy took bat home
1 girl took bat home
3 dog brought hat home
-c 參數顯示文件中每行連續出現的次數。
[root@stu100 ~]# uniq -d test
boy took bat home
dog brought hat home
-d選項僅顯示文件中連續重復出現的行。
[root@stu100 ~]# uniq -u test
girl took bat home
-u選項顯示文件中沒有連續出現的行。
[root@stu100 ~]# uniq -f 2 -s 2 test
boy took bat home
忽略每行的前2個字段,忽略第二個空白字符和第三個字段的首字符,結果at home
[root@stu100 ~]# uniq -f 1 test
boy took bat home
dog brought hat home
忽略每行的第一個字段,這樣boy ,girl開頭的行看起來是連續重復的行。
uniq 命令
文字
uniq是LINUX命令
用途
報告或刪除文件中重復的行。
語法
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 僅顯示重復行。
-f Fields 忽略由 Fields 變量指定的字段數目。 如果 Fields 變量的值超過輸入行中的字段數目, uniq 命令用空字符串進行比較。 這個標志和 -Fields 標志是等價的。
-u 僅顯示不重復的行。
-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 標志是等價的。
退出狀態
該命令返回以下退出值:
0 命令運行成功。
>0 發生錯誤。
示例
要刪除名為 fruit 文件中的重復行並將其保存到一個名為 newfruit 的文件中,輸入:
uniq fruit newfruit
如果 fruit 文件包含下列行:
apples
apples
peaches
pears
bananas
cherries
cherries
則在您運行uniq 命令后 newfruit 文件將包含下列行:
apples
peaches
pears
bananas
cherries
文件
/usr/bin/uniq 包含 uniq 命令。