文本处理工具uniq去重与sort排序

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了文本处理工具uniq去重与sort排序相关的知识,希望对你有一定的参考价值。

uniq 命令删除文件中的重复行。 uniq 命令读取由 InFile 参数指定的标准输入或文件。该命令首先比较相邻的行,然后除去第二行和该行的后续副本。

用法:uniq[选项]…(输入[输出]]
从输入(或标准输入)中过滤相邻的匹配行,
写入到输出(或标准输出)。

以这个文件为示例

[root@zhaocheng ~]# cat filetest
root:x:0:0:root:/root:/bin/bash
root:x:0:0:root:/root:/bin/bash
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
halt:x:7:0:halt:/sbin:/sbin/halt

参数解释
-c 按出现的次数计算前缀行数
-d 只打印重复的行
-D 打印所有重复的行

如果没有选项,匹配的行将合并到第一个出现的行。

[root@zhaocheng ~]# uniq filetest
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
halt:x:7:0:halt:/sbin:/sbin/halt

-c将文本中所有的字段进行统计,有一样的就会统计出来

[root@zhaocheng ~]# uniq -c filetest
      3 root:x:0:0:root:/root:/bin/bash
      1 bin:x:1:1:bin:/bin:/sbin/nologin
      1 daemon:x:2:2:daemon:/sbin:/sbin/nologin
      1 adm:x:3:4:adm:/var/adm:/sbin/nologin
      1 halt:x:7:0:halt:/sbin:/sbin/halt

-d只打印重复的行

[root@zhaocheng ~]# uniq -d filetest
root:x:0:0:root:/root:/bin/bash

-D将所有的重复的行都打印出来,-d只将重复的行打印一次

[root@zhaocheng ~]# uniq -D filetest
root:x:0:0:root:/root:/bin/bash
root:x:0:0:root:/root:/bin/bash
root:x:0:0:root:/root:/bin/bash

sort
用法:排序[选项]…[文件]…
或者:[选项]…——files0-from = F
将所有文件的排序连接写入标准输出。
-b 忽略每行前面开始出的空格字符。
-c 检查文件是否已经按照顺序排序。
-f 排序时,忽略大小写字母。
-M 将前面3个字母依照月份的缩写进行排序。
-n 依照数值的大小排序。
-o <输出文件> 将排序后的结果存入指定的文件。
-r 以相反的顺序来排序。
-t <分隔字符> 指定排序时所用的栏位分隔字符。
-k 选择以哪个区间进行排序。

[root@zhaocheng ~]# sort filetest
adm:x:3:4:adm:/var/adm:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
halt:x:7:0:halt:/sbin:/sbin/halt
root:x:0:0:root:/root:/bin/bash
root:x:0:0:root:/root:/bin/bash
root:x:0:0:root:/root:/bin/bash

这里换成数字的话,那么就需要使用sort -n去进行排序

[root@zhaocheng ~]# sort -n number.txt 
2
3
5
7
56
65
80

-r的话就是进行倒序进行排列

[root@zhaocheng ~]# sort -n -r number.txt 
80
65
56
7
5
3
2

sort -u可以也可以进行排序以及去重

[root@zhaocheng ~]# sort -u filetest
adm:x:3:4:adm:/var/adm:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
halt:x:7:0:halt:/sbin:/sbin/halt
root:x:0:0:root:/root:/bin/bash

将我们的输出的内容进行保存,这里就需要-o,存储到指定文件

[root@zhaocheng ~]# sort -n -r number.txt -o number.txt 
[root@zhaocheng ~]# cat number.txt 
9865
890
876
56
55
34
6
4

以上是关于文本处理工具uniq去重与sort排序的主要内容,如果未能解决你的问题,请参考以下文章

排序去重与离散化

排序去重与离散化

sort和uniq的使用

利用Linux命令行进行文本按行去重并按重复次数排序

shell编程之sort命令和uniq命令:数据排序去重命令

linux文件行排序去重结果不同sort和uniq