在linux中,使用sort按行进行排序是很简单的。
不过有时,生活总是爱抛给你一个一个的问题。如果使用sort按多个列值排列,同时使用tab作为分隔符,而且对于某些列需要进行逆序排列,这样sort命令来实现就略显折腾。
来看具体的例子吧。
比如下面的文件内容,使用[TAB]进行分割:
name score total user1 1 4 user2 2 3 user3 3 2 user4 4 1
对2和3字段进行排序,2字段降序,3字段升序
sort -t $' ' -k 2r,2 -k 3n,3 user.txt
解释如下:
-t $' ':指定TAB为分隔符
-k 1, 1: 按照第一列的值进行排序,如果只有一个1的话,相当于告诉sort从第一列开始直接到行尾排列
n:代表是数字顺序,默认情况下市字典序,如10<2
r: reverse 逆序排列,默认情况下市正序排列