转:
特别注意:
用uniq命令可以删除相邻的重复行:uniq [file]但如果一文本中有重复却不相邻的行则无法删除,需要结合sort命令: sort [file]|uniq等效的sort命令是:sort -u [file] =========================================去重复后统计: sort needsort.txt |uniq |wc
原来的行数:
sort needsort.txt |uniq |wc
重复行和重复多少次:
sort needsort.txt |uniq -c -d
单独行统计,就是只有一行没有重复的统计:
sort needsort.txt |uniq -u|wc
你也可以按照列来排序:sort -k2nr sort如何按指定的列排序0000 27189 41925425065f 15 419254250663 7 419254250675 5 419254250691 76 419254250693 2 4192542506a7 82 4192542506a9 58 4192542506bf 68 4192542506c1 56 4192542506d7 145 4192542506e1 127 4192542506e3 230 4192542506e5 7 4192542506ef 48 4192542506f1 463 4192542506ff 3847 41925425070b 2376 41925425070d 3408 419254250713 109025 419254250715 4 419254250726 134 41925425我想按第二列值进行排序,从大到小的顺序。
sort -k2nr sorttest.txt
0713 109025 419254250000 27189 4192542506ff 3847 41925425070d 3408 41925425070b 2376 4192542506f1 463 4192542506e3 230 4192542506d7 145 419254250726 134 4192542506e1 127 4192542506a7 82 419254250691 76 4192542506bf 68 4192542506a9 58 4192542506c1 56 4192542506ef 48 41925425065f 15 419254250663 7 4192542506e5 7 419254250675 5 419254250715 4 419254250693 2 41925425
sort -k2nr
作者: Songs 出自: http://www.linuxdiyf.comuniq命令的作用:显示唯一的行,对于那些连续重复的行只显示一次!接下来通过实践实例说明:[root@stu100 ~]# cat testboy took bat homeboy took bat homegirl took bat homedog brought hat homedog brought hat homedog brought hat home看test文件的内容,可以看到其中的连续重复行[root@stu100 ~]# uniq testboy took bat homegirl took bat homedog brought hat homeuniq命令不加任何参数,仅显示连续重复的行一次[root@stu100 ~]# uniq -c test2 boy took bat home1 girl took bat home3 dog brought hat home-c 参数显示文件中每行连续出现的次数。[root@stu100 ~]# uniq -d testboy took bat homedog brought hat home-d选项仅显示文件中连续重复出现的行。[root@stu100 ~]# uniq -u testgirl took bat home-u选项显示文件中没有连续出现的行。[root@stu100 ~]# uniq -f 2 -s 2 testboy took bat home忽略每行的前2个字段,忽略第二个空白字符和第三个字段的首字符,结果at home[root@stu100 ~]# uniq -f 1 testboy took bat homedog 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 命令。