加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

linux文件处理之 sort命令排序文本并过滤重复的行

(2012-01-13 09:37:56)
标签:

中国红盟

服务器安全

windows安全

数据库安全

网络安全

it

功能说明:将文本文件内容加以排序。

语  法:sort [-bcdfimMnr][-o<输出文件>][-t<分隔字符>][+<起始栏位>-<结束栏位>][--help][--verison][文件]

补充说明:sort可针对文本文件的内容,以行为单位来排序。

排序键值字段的类型:
  -b   忽略每行前面开始出的空格字符。
  -c   检查文件是否已经按照顺序排序。
  -d   排序时,处理英文字母、数字及空格字符外,忽略其他的字符(字典顺序)。
-g  一般数值:以浮点数字类型比较字段。这个选项的动作跟-n类似,差别在于这个选项的数字有小数点及指数。(仅GNU版本支持)
  -f   排序时,讲混用的字母都视为小写字母,不管大写还是小写都按小写的方式排序。
  -i   忽略无法打印的字符。
-k   定义排序的键值字段。
  -m   将几个排序好的文件进行合并。
  -M   将前面3个字母依照月份的缩写进行排序。
  -n   按整数类型比较排序。
  -o<输出文件>   将排序后的结果存入指定的文件。
  -r   以相反的顺序来排序。
  -t<分隔字符>   指定排序时所用的栏位分隔字符。
-u 只有唯一的记录,丢死所有相同键值的记录,只留其中的第一条。
  +<起始栏位>-<结束栏位>   以指定的栏位来排序,范围由起始栏位到结束栏位的前一栏位。
  --help   显示帮助。
  --version   显示版本信息
以字段排序
 
[root@linuxso.com sh]# sort -t : -k1,1 passwd  |head -n 3   
adm:x:3:4:adm:/var/adm:/sbin/nologin
apache:x:48:48:Apache:/var/www:/sbin/nologin
avahi:x:70:70:Avahi daemon:/:/sbin/nologin
-t 指定分隔符,-k指定排序方式,以用户名排序。
-k1,1指的是以第一个字段的第一个字符开始比较
 
 
[root@linuxso.com sh]# sort -t : -k3nr passwd  |head -n 3
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
hacluster:x:500:500::/home/hacluster:/bin/bash
avahi-autoipd:x:100:104:avahi-autoipd:/var/lib/avahi-autoipd:/sbin/nologin 
反向UID排序。
-k3nr指的是 以第三个字段,从大到小排序。
 
[root@linuxso.com sh]# sort -t : -k4n -k3nr passwd  |head -n 3
operator:x:11:0:operator:/root:/sbin/nologin
halt:x:7:0:halt:/sbin:/sbin/halt
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
-k4n 是先指定第四个字段排序,-k3nr是指第一个排序后再排序第三个字段,可以指定多个排序
 
[root@linuxso.com sh]# sort -t : -k4n -u passwd  |head -n 3
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin 
-u是以唯一的gid经行排序
 排除重复的字段
使用uniq进行删除重复的排序
 
[root@linuxso.com sh]# cat passwd  | head -n 5
root:x:0:0:root:/root:/bin/bash
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
 
[root@linuxso.com sh]# cat passwd | head -n 4 |uniq
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
显示要排序的文本
 
[root@linuxso.com sh]# cat tt1
test 100
test 100
test1 80
test2 90
 
 
 
以第二个字段排序并去除重复的字段
 
[root@linuxso.com sh]# cat tt1 |sort -k2nr -u
test 100
test2 90
test1 80
使用uniq去除重复
 
[root@linuxso.com sh]# cat tt1 |sort -k2nr|uniq
test 100
test2 90
test1 80
显示排序后的记录,重复的字段
 
[root@linuxso.com sh]# cat tt1 |sort -k2nr|uniq -c
      2 test 100
      1 test2 90
      1 test1 80
仅显示重复的字段
 
[root@linuxso.com sh]# cat tt1 |sort -k2nr|uniq -d
test 100
 
显示未重复的
[root@linuxso.com sh]# cat tt1 |sort -k2nr|uniq -u
test2 90
test1 80
中国红盟.因为专业所以信赖! 

中国红盟(www.runet.cn):您身边的服务器.网站安全专家.

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有