Linux安全网 - Linux操作系统_Linux 命令_Linux教程_Linux黑客

会员投稿 投稿指南 本期推荐: 强烈推荐:Ylmf OS 3.0 正式版发布附迅雷高 XP系统下硬盘安装Fedora 14图文教程
搜索:
您的位置: Linux安全网 > Linux入门 > » 正文

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

来源: crazylinuxming 分享至:

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

语  法: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

 


Tags:
分享至:
最新图文资讯
1 2 3 4 5 6
验证码:点击我更换图片 理智评论文明上网,拒绝恶意谩骂 用户名:
关于我们 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 发展历史