码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2020-02-19 01:13:15      阅读:144      评论:0      收藏:0      [点我收藏+]

标签:roo   cat   标准输入   合并   指定   前缀   删除文件   文件中   数字   

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排序

标签:roo   cat   标准输入   合并   指定   前缀   删除文件   文件中   数字   

原文地址:https://blog.51cto.com/14143894/2472057

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!