sort 命令用来对文件行进行排序,常用的一些参数
-n
表示数字序号-r
表示逆序-k,
表示根据第几列-t,
表示字段与字段之间的分隔符
使用
按第三列排序
sort -nk3 /path/to/file
解释:
-n
表示的是按照字母序排-k3
表示第三列
按列优先级排序
比如有一行数据包含多列,需要按照第一列排序,然后按照第三列排序
1 a 2
3 b 5
1 c 4
2 d 2
3 e 1
期望的结果是按照第一列先排序,然后第三列排序
1 a 2
1 c 4
2 d 2
3 e 1
3 b 5
那么可以使用命令
sort -n -k1,1 -k3,3 /path/to/file
严格意义来说,-k3
表示的是从第三个字段开始到行尾。
使用自定义分隔符
sort -t: -nk3 /etc/passwd
sort -t' ' -k3,3 file
-t
后面接 :
表示以 :
来分割列,最常见的比如 /etc/passwd
文件,以 :
来区分一行中的各个列
合并两个文件并且移除重复行
一个典型的 sort 应用场景
sort file1 file2 | uniq
排序日志中耗时最大的行
假设有日志
2020-02-02 11:20:20 requestId method=someGet param=param cost=100
2020-02-02 11:20:21 requestId1 method=someGet param=param cost=101
2020-02-02 11:20:22 requestId2 method=someGet param=param cost=103
现在要过滤出其中耗时最大的行,可以使用
sort -r -nk4 -t= log.txt
解释:
-t=
split lines by=
,so the string to sort is column 4-k4
sort column 4-n
numberic order-r
reverse order