最近处理大量数据需要排序,使用linux sort是个简单,有效的方法.
我一般都是按列排序的,所以着重看了下按列排序的相关参数.
下面是一个例子,一共有两列数字,我要将第二列按照数字大小排序 文件名为sample.csv
514414,0003116971
4709921,0083666834
4714029,0083659466
4717305,0083676565
4731228,0083671247
4731285,0083672352
4736531,0083673521
4742303,0083669696
8195195,0083669966
8361635,0083669021
命令如下 sort -t, -k 2n,2 sample.csv
-t: 分隔符参数
-k: 这个有点复杂了, man 里面原文是这样写的
-k, --key=POS1[,POS2]
start a key at POS1 (origin 1), end it at POS2 (default end of
line). See POS syntax below
关于POS是这样写的
POS is F[.C][OPTS], where F is the field number and C the character
position in the field; both are origin 1. If neither -t nor -b is in
effect, characters in a field are counted from the beginning of the
preceding whitespace. OPTS is one or more single-letter ordering
options, which override global ordering options for that key. If no
key is given, use the entire line as the key.
总结下-k的用法是这样的,-k后面是可以跟两个参数值的,一个是起始的位置(默认是1),另一个是结束的位置(默认是行尾),
关于起始位置POS的用法是这样的, POS包含三个信息,一个是列号,一个是字符在这个列里面的位置,这两都默认是1,如果没有指明分隔符或者-b这个参数的话就从前面的空白处开始,第三个是一个字母,是sort里面的一个选项字符例如n,r,R等.