sort命令的k选项大讨论

sort命令的k选项大讨论

ID:9814653

大小:35.50 KB

页数:4页

时间:2018-05-10

sort命令的k选项大讨论_第1页
sort命令的k选项大讨论_第2页
sort命令的k选项大讨论_第3页
sort命令的k选项大讨论_第4页
资源描述:

《sort命令的k选项大讨论》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、有时候学习脚本,你会发现sort命令后面跟了一堆类似-k1,2,或者-k1.2-k3.4的东东,有些匪夷所思。今天,我们就来搞定它—-k选项!1准备素材$catfacebook.txtgoogle1105000baidu1005000guge503000sohu1004500第一个域是公司名称,第二个域是公司人数,第三个域是员工平均工资。(除了公司名称,其他的别信,都瞎写的^_^)2我想让这个文件按公司的字母顺序排序,也就是按第一个域进行排序:(这个facebook.txt文件有三个域)$sort-t

2、‘‘-k1facebook.txtbaidu1005000google1105000guge503000sohu1004500看到了吧,就直接用-k1设定就可以了。(其实此处并不严格,稍后你就会知道)3我想让facebook.txt按照公司人数排序$sort-n-t‘‘-k2facebook.txtguge503000baidu1005000sohu1004500google1105000不用解释,我相信你能懂。但是,此处出现了问题,那就是baidu和sohu的公司人数相同,都是100人,这个时候怎么

3、办呢?按照默认规矩,是从第一个域开始进行升序排序,因此baidu排在了sohu前面。4  我想让facebook.txt按照公司人数排序,人数相同的按照员工平均工资升序排序:$sort-n-t‘‘-k2-k3facebook.txtguge503000sohu1004500baidu1005000google1105000看,我们加了一个-k2-k3就解决了问题。对滴,sort支持这种设定,就是说设定域排序的优先级,先以第2个域进行排序,如果相同,再以第3个域进行排序。(如果你愿意,可以一直这么写下去

4、,设定很多个排序优先级)5我想让facebook.txt按照员工工资降序排序,如果员工人数相同的,则按照公司人数升序排序:(这个有点难度喽)$sort-n-t‘‘-k3r-k2facebook.txtbaidu1005000google1105000sohu1004500guge503000此处有使用了一些小技巧,你仔细看看,在-k3后面偷偷加上了一个小写字母r。你想想,再结合我们上一篇文章,能得到答案么?揭晓:r和-r选项的作用是一样的,就是表示逆序。因为sort默认是按照升序排序的,所以此处需要加

5、上r表示第三个域(员工平均工资)是按照降序排序。此处你还可以加上n,就表示对这个域进行排序时,要按照数值大小进行排序,举个例子吧:$sort-t‘‘-k3nr-k2nfacebook.txtbaidu1005000google1105000sohu1004500guge503000看,我们去掉了最前面的-n选项,而是将它加入到了每一个-k选项中了。6-k选项的具体语法格式要继续往下深入的话,就不得不来点理论知识。你需要了解-k选项的语法格式,如下:[FStart[.CStart]][Modifier]

6、[,[FEnd[.CEnd]][Modifier]]这个语法格式可以被其中的逗号(“,”)分为两大部分,Start部分和End部分。先给你灌输一个思想,那就是“如果不设定End部分,那么就认为End被设定为行尾”。这个概念很重要的,但往往你不会重视它。Start部分也由三部分组成,其中的Modifier部分就是我们之前说过的类似n和r的选项部分。我们重点说说Start部分的FStart和C.Start。C.Start也是可以省略的,省略的话就表示从本域的开头部分开始。之前例子中的-k2和-k3就是省略

7、了C.Start的例子喽。FStart.CStart,其中FStart就是表示使用的域,而CStart则表示在FStart域中从第几个字符开始算“排序首字符”。同理,在End部分中,你可以设定FEnd.CEnd,如果你省略.CEnd,则表示结尾到“域尾”,即本域的最后一个字符。或者,如果你将CEnd设定为0(零),也是表示结尾到“域尾”。7突发奇想,从公司英文名称的第二个字母开始进行排序:$sort-t‘‘-k1.2facebook.txtbaidu1005000sohu1004500google11

8、05000guge503000看,我们使用了-k1.2,这就表示对第一个域的第二个字符开始到本域的最后一个字符为止的字符串进行排序。你会发现baidu因为第二个字母是a而名列榜首。sohu和google第二个字符都是o,但sohu的h在google的o前面,所以两者分别排在第二和第三。guge只能屈居第四了。8又突发奇想,,只针对公司英文名称的第二个字母进行排序,如果相同的按照员工工资进行降序排序:$sort-t‘‘-k1.2,1.2-k3,3nrfac

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。