sort命令可以对文本处理后的结果进行排序,在文本处理过程中非常有用。
语法格式
sort [-bcdfimMnr][-o<输出文件>][-t<分隔字符>][+<起始栏位>-<结束栏位>][文件][-k field1[,field2]]
语法解释
-b 忽略每行前面开始处的空格字符。
-c 检查文件是否已经按照顺序排序。
-d 排序时,处理英文字母、数字及空格字符外,忽略其他的字符。
-f 排序时,将小写字母视为大写字母。
-i 排序时,除了040至176之间的ASCII字符外,忽略其他的字符。
-m 将几个排序好的文件进行合并。
-M 将前面3个字母依照月份的缩写进行排序。
-n 依照数值的大小排序。
-u 意味着是唯一的(unique),输出的结果是去完重了的。
-o<输出文件> 将排序后的结果存入指定的文件。
-r 以相反的顺序来排序。
-t<分隔字符> 指定排序时所用的栏位分隔字符。
+<起始栏位>-<结束栏位> 以指定的栏位来排序,范围由起始栏位到结束栏位的前一栏位。
--help 显示帮助。
--version 显示版本信息。
[-k field1[,field2]] 按指定的列进行排序。
这其中最常用的就是-k参数了
-k参数的使用
基本使用
root@DESKTOP-1N42TVH:/home/test5/test# cat facebook.txt
google 110 5000
baidu 100 5000
guge 50 3000
sohu 100 4500
root@DESKTOP-1N42TVH:/home/test5/test# sort -k 1 facebook.txt ## 按照第一列的第一个字符排序
baidu 100 5000
google 110 5000
guge 50 3000
sohu 100 4500
root@DESKTOP-1N42TVH:/home/test5/test# sort -k 2 facebook.txt ## 按照第二列的第一个字符排序
sohu 100 4500
baidu 100 5000
google 110 5000
guge 50 3000
-k -n联用
root@DESKTOP-1N42TVH:/home/test5/test# sort -k 2n facebook.txt ## 第二列按照整数值排序
guge 50 3000
baidu 100 5000
sohu 100 4500
google 110 5000
root@DESKTOP-1N42TVH:/home/test5/test# sort -k 2n -k 3n facebook.txt ## 第二列、第三列依次按照整数值排序
guge 50 3000
sohu 100 4500
baidu 100 5000
google 110 5000
设置对第n个字符排序,使用“.”
root@DESKTOP-1N42TVH:/home/test5/test# sort -k 1.2 facebook.txt ## 按照第一列的第二个字符排序
baidu 100 5000
sohu 100 4500
google 110 5000
guge 50 3000
root@DESKTOP-1N42TVH:/home/test5/test# sort -k 1.3 facebook.txt ## 按照第一列的第三个字符排序
guge 50 3000
sohu 100 4500
baidu 100 5000
google 110 5000
设置继续排序,使用“,”
root@DESKTOP-1N42TVH:/home/test5/test# sort -k 2,2 facebook.txt ## 从第二个与开始排序,到第二个域结束,然后从头排序(是指第二列排序结束后,接着使用其他列排序,从第一列开始)
baidu 100 5000
sohu 100 4500
google 110 5000
guge 50 3000
root@DESKTOP-1N42TVH:/home/test5/test# sort -t " " -k 2n,2n -k 3n,3n facebook.txt ## 先按照第二个域按照数值排序,然后第三个域数值进行排序,然后从头排序
guge 50 3000
sohu 100 4500
baidu 100 5000
google 110 5000
未完待续