前言
目的:逐步带你了解sort排序,解开-k参数的困惑。
困惑之处:sort -k 1.2,1.2
1.2是什么意思?1.2,1.2又是什么鬼?为什么sort -k 1.2和sort -k 1.2,1.2的排序结果不一致?
本文带你逐步解析。
一、sort语法、参数、及其注意事项
1、语法
语法:
sort [-bcdfimMnr][-o<输出文件>][-t<分隔字符>][+<起始栏位>-<结束栏位>][--help][--verison][文件]
2、参数
参数:
-b 忽略每行前面开始出的空格字符。从第一个可见字符开始比较。
-d 排序时,处理英文字母、数字及空格字符外,忽略其他的字符。
-f 排序时,忽略字符大小写.
-i 排序时,除了040至176之间的ASCII字符外,忽略其他的字符。
-c 检查文件是否已经按照顺序排序。
-m 将几个排序好的文件进行合并。
-M 前面3个字母依照月份的缩写进行排序。
-n 依照数值的大小排序。
-o <输出文件> 将排序后的结果存入指定的文件。
-r 降序排列(默认是升序)。
-t <分隔字符> 指定排序时所用的栏位分隔字符。
-k field1[,field2] 按指定的列进行排序。
-u 排序后相同的行只显示一次(默认按整行进行比较)
--help 显示帮助。
--version 显示版本信息。
3、注意事项
1、排序时,默认是按每行/每个域的首字符排序,数字的优先级要大于字符的优先级
2、不指定升序还是降序时,默认是升序
4、重点难点
重点掌握:-t -n -o -u - k,尤其是-k。
其他的参数相对比较容易掌握。
二、案例数据准备
#vim salary.txt 编辑测试文件数据(工资表,里面的数据是虚拟的)
google 110 5000
baidu 100 5000
guge 50 3000
sohu 100 4500
sohu 30 1500
#vim tt.txt
dell 100 10020 ee
lenovo 200 12202 a
huawei 500 13004 ff
cisco 300 24005 bb
#cp tt.txt t.txt
#vim t.txt
随意在里面添加一些空格,便于暴露出了-t的不足之处。
dell 100 10020 ee
lenovo 200 12202 a
huawei 500 13004 ff
cisco 300 24005 bb
三、通过案例,由浅入深了解sort
1、-r 指定排序
#sort salary.txt 默认根据首行的首字母&#