Shell的sort

本文详细介绍了sort命令的使用方法,包括其基本语法、常用选项及其功能,例如如何通过-b、-c、-d等选项实现不同需求的排序。此外,还特别讲解了如何利用-k选项按字段进行排序,并给出了具体的实例。

1 sort用法


sort 可以对文本文件进行排序,使用用法:

语法:

sort [ options ] [ file(s) ]

用途:

将输入行按照键值字段与数据类型选项以及locale排序


options的主要选项:

 选项                 说明
-b忽略开头的空白
-c检查输入是否已正确地排序。如输入未经排序,但退出码(exit code)为非零值,则不会有任何输出。
-d字典顺序:仅文字数字与空白才有意义
-g一般数值:以浮点数字类型比较字段。这个选项的动作有点类似 -n,差别仅在于这个选项的数字可能有小数点及指数(例:6.022e+23)。仅GNU版本提供些功能。
-f将混用的字母都看作相同大小写,也就是以不管字母大小 写的方式排序
-i忽略无法打印的字母
-k定义排序键值字段
-m将已排序的输入文件,合并为一个排序后的输出数据流
-n以整数类型比较排序
-o  outfile将输出写到指定的文件,而非标准输出。如果该文件为输入文件之一,则sort在进行排序与写到输出文件之前,会先将它复制到一个临时的文件。
-r设置排序是倒序,如果不设置此选项,则是默认的升序
-t char使用单个字符 char 字段作为默认的字段分隔字符,取代默认的空白字符
-u只有唯一的记录:丢弃所有具相同键值的记录,只留其中的第一条,去掉重复的记录。


sort 会读取指定的文件,如果未给定文件,则读取标准输入,再将排序好的数据写到标准输出。


3 以字段排序


在sort命令中,以字段来排序,一般以 -k 选项来指定排序字段, 而且使用 -t 来指定字段的分界符。如果没有指定 -t 选项,则以空白作为分界符而且记录内的开关和结尾的空白都忽略不记。

一般 -k 选项后面跟着是一个字段编号,或是一对数字。

如果 -k 仅指定一个字段编号,则排序键值会从该字段开始,一直继续到记录的结尾(不是字段的结尾)

如果 -k 是指定一对用逗号分隔的数字,则键值将由第一字段值的起始处开始,结束于第二个字段值的结尾。


如果使用点号分隔,如:

 -k2.4, 5.6

则是表示从第2个字段的第4个字符开始比较,一直比较到第5个字段的第6个字符。


当出现多个 -k 选项时,会先从第一个键值的字段开始排序,找出匹配的该键值的记录后,再进行第二个键值字段的排序,以此类推。

例子

 sort -t: -k4n -k3n /etc/passwd

先以第4列按整数排序,排序出来的结果再以第3列以整数进行排序


例子

 > sort -t: -k1,1 /etc/passwd

abrt:x:173:173::/etc/abrt:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
apache:x:48:48:Apache:/var/www:/sbin/nologin
avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin

以冒号隔开的第一 个字段,用户名进行排序


评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值