sort指令

1、sort的定义:
sort将文件的每一行作为一个单位相互比较,比较原则是从首字符向后依次按ASCII码进行比较,最后将它们按升序输出。
【例】
这里写图片描述

2、选项
(1)-u:在输出行中排序并去除重复行。
【例】
这里写图片描述

(2)-r:逆序排序。
说明:sort默认的排序方式是升序的,如果想改成降序,就需要加个-r。
【例】
这里写图片描述

(3)-o:将排序结果写入文件中。
说明:由于sort默认是把结果输出到标准输出,所以需要用重定向才能将结果写入文件,形如sort filename > newfile。但是,如果你想把排序结果输出到原文件中,用重定向就不行了。
【例】
这里写图片描述

(4)-n:按数值排序。
说明:如果按字符排序,当10与2比较时,排序程序会先比较1和2,这样就会出现10放在2前面的情况。所以,最好指明排序的方式。
【例】
这里写图片描述

(5)sort的-t选项和-k选项:
1)命令格式:sort -t ‘分隔符’ -k ‘指定列数’
【例】
这里写图片描述
说明:这个文件有三列,列和列之间用冒号隔开,第一列表示食物类型,第二列表示食物数量,第三列表示食物价格。

(6)其他sort常用选项
1)-f:将小写字母都转换成大写字母来进行比较,亦即忽略大小写。
2)-c:检查文件是否已排好序,如果乱序,则输出第一个乱序的行的相关信息,最后返回1。
3)-C:检查文件是否已排好序,如果乱序不输出内容,仅返回1。
4)-M:以月份来排序。
5)-b:忽略每一行前面的所有空白部分,从第一个可见字符开始比较。

3、练习:
file6内容:公司名称 公司人数 人均薪资
google 111000 15000
baidu 100000 10000
guge 8000 7500
sohu 90000 10000

(1)按第一个域进行排序
这里写图片描述

(2)按公司人数降数排序
这里写图片描述

(3)按照公司员工薪资排序,薪资相同的按照公司员工数量升序排序。
这里写图片描述

(4)从公司英文名称的第二个字母开始进行排序
这里写图片描述
释:“-k 1.2”表示对第一个域的第二个字符开始到本域的最后一个字符为止的字符串进行排序。其中,baidu因为第二个字母是a而名列榜首;sohu和google第二个字符都是o,但是sohu的h在google的o前面,所以sohu排在第二行,google排在第三行;guge就只能排在第四行了。

(5)只针对公司英文名称的第二个字母进行排序,如果相同则只按照员工工资进行降序排序。
这里写图片描述
释:“-k 1.2,1.2”表示只对第二个字母进行排序。“-k 1.2”因为省略了end部分,就意味着从第二个字母开始到最后一个字符为止的字符串进行排序。对于员工工资进行排序,使用“-k 3,3”这是最准确的表述,表示只对本域进行排序,如果省略了后面的3,就变成对第3个域开始到最后一个域位置的内容进行排序。

  • 7
    点赞
  • 57
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值