标签:
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
标签:
原文地址:http://www.cnblogs.com/mggwct/p/4978020.html