码迷,mamicode.com
首页 > 编程语言 > 详细

linux:srot进行对文件中的字段排序

时间:2015-11-19 18:19:14      阅读:227      评论:0      收藏:0      [点我收藏+]

标签:

sort对文件中的指定行进行排序并将结果写到标准的输出。如果File参数指定了多个文件,那么sort命令将这些文件连接起来,当作一个文件进行排序。

sort语法:

sort[-fbMnrtuk] [file]

选项参数:

-f忽略大小写差异。

-b忽略最前面的空格。

-r反向排序

-M以月份的名字来排序

-n使用纯数字进行排序

-u相同的数字仅出现一次

-t分隔符,默认是tab

-k以哪个field来进行排序

sort默认是以第一个数据进行排序的,默认以字符串的形式排序,数字拍在字母前。

sort的-n:你有没有遇到过10比2小的情况。我反正遇到过。出现这种情况是由于排序程序将这些数字按字符来排序了,排序程序会先比较1和2,显然1小,所以就将10放在2前面喽。这也是sort的一贯作风.我们如果想改变这种现状,就要使用-n选项,来告诉sort,“要以数值来排序”!

sort -k -t:

admin@app-traff20-vm4503 jr.jd.search]$ sort -k 2 -t: cc.log
214:22:78
113:27:76
222:2:78
524:678:987
342:98:99
Abort:abadon:yes
hello:boy:china
cat:dog:sheep
egg:fish:meat
boy:girl:animal
apple:pear:peach

按照:分隔,-k指定了从以第二个词做排序。

会发现sort命令后面跟了一堆类似-k1,2,或者-k1.2 -k3.4的东东,有些匪夷所思。

数据:公司,人数,工资

google 110 5000
baidu 100 5000
guge 50 3000
sohu 100 4500

想让这个文件按公司的字母顺序排序,也就是按第一个域进行排序

直接设定 -k 1就好;

按照人数进行排序,人数相同安装工资排序

[admin@app-traff20-vm4503 jr.jd.search]$ sort -k 3rn -k 2n cc.log
baidu 100 5000
google 110 5000
sohu 100 4500
guge 50 3000

从公司英文名称的第二个字母开始进行排序

[admin@app-traff20-vm4503 jr.jd.search]$ sort -k 1.2 cc.log
baidu 100 5000
sohu 100 4500
google 110 5000
guge 50 3000

只针对公司英文名称的第二个字母进行排序,如果相同的按照员工工资进行降序排序

[admin@app-traff20-vm4503 jr.jd.search]$ sort -k 1.2 -k 3rn cc.log
baidu 100 5000
sohu 100 4500
google 110 5000
guge 50 3000

 

linux:srot进行对文件中的字段排序

标签:

原文地址:http://www.cnblogs.com/mggwct/p/4978020.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!