Linux sort 多字段分组排序
常用参数:
- -t: 指定分隔符
- -k: 指定域
- -u: 去除重复行
- -n: 以数值排序
- -r: 降序排序 (sort默认的排序方式是升序)
- -o: 结果重定向输出到文件
1、源文件:
1 # cat hhh 2 Nov 1 : 4548 3 Nov 2 : 1383 4 Oct 2 : 3738 5 Oct 3 : 4181 6 Nov 4 : 1383 7 Nov 14 : 1383 8 Nov 11 : 1381 9 Nov 12 : 1381 10 Oct 4 : 4105 11 Oct 5 : 4089
2、按照第1列分组,第二列排序:
- -k1,1 指定以第一列为关键字排序
- -k2n,2 指定以第二列为关键字做数据排序
1 # sort -k1,1 -k2n,2 hhh 2 Nov 1 : 4548 3 Nov 2 : 1383 4 Nov 4 : 1383 5 Nov 11 : 1381 6 Nov 12 : 1381 7 Nov 14 : 1383 8 Oct 2 : 3738 9 Oct 3 : 4181 10 Oct 4 : 4105 11 Oct 5 : 4089
3、按照第1列分组,再按照第4列分组,最后第2列降序排列排序:
1 # sort -k1,1 -k4n,2 -k2rn,3 hhh 2 Nov 12 : 1381 3 Nov 11 : 1381 4 Nov 14 : 1383 5 Nov 4 : 1383 6 Nov 2 : 1383 7 Nov 1 : 4548 8 Oct 2 : 3738 9 Oct 5 : 4089 10 Oct 4 : 4105 11 Oct 3 : 4181