sort命令是在Linux里非常有用,它将文件进行排序,并将排序结果标准输出。sort命令既可以从特定的文件,也可以从stdin中获取输入。
语法格式:sort [参数] [文件]
常用参数:
-b | 忽略每行前面开始出的空格字符 |
-c | 检查文件是否已经按照顺序排序 |
-d | 排序时,处理英文字母、数字及空格字符外,忽略其他的字符 |
-f | 排序时,将小写字母视为大写字母 |
-i | 排序时,除了040至176之间的ASCII字符外,忽略其他的字符 |
-m | 将几个排序号的文件进行合并 |
-M | 将前面3个字母依照月份的缩写进行排序 |
-n | 依照数值的大小排序 |
-o <输出文件> | 将排序后的结果存入制定的文件 |
-r | 以相反的顺序来排序 |
-t <分隔字符> | 指定排序时所用的栏位分隔字符 |
-k | 指定需要排序的栏位 |
参考实例
sort将文件/文本的每一行作为一个单位,相互比较,比较原则是从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出:
1 |
[root@ledlinux ~]# cat sort.txt <br> AA:10:1.1<br> CC:30:3.3<br> DD:40:4.4<br> BB:20:2.2<br> FF:60:6.6<br> FF:60:6.6<br> EE:50:5.5<br> [root@ledlinux ~]# sort sort.txt <br> AA:10:1.1<br> BB:20:2.2<br> CC:30:3.3<br> DD:40:4.4<br> EE:50:5.5<br> FF:60:6.6<br> FF:60:6.6 |
忽略相同行使用-u选项或者uniq:
1 |
[root@ledlinux ~]# cat sort.txt <br> AA:10:1.1<br> CC:30:3.3<br> DD:40:4.4<br> BB:20:2.2<br> FF:60:6.6<br> FF:60:6.6<br> EE:50:5.5<br> [root@ledlinux ~]# sort -u sort.txt <br> AA:10:1.1<br> BB:20:2.2<br> CC:30:3.3<br> DD:40:4.4<br> EE:50:5.5<br> FF:60:6.6<br> [root@ledlinux ~]# uniq sort.txt <br> AA:10:1.1<br> CC:30:3.3<br> DD:40:4.4<br> BB:20:2.2<br> FF:60:6.6<br> EE:50:5.5 |
sort的-n、-r、-k、-t选项的使用:
1 |
[root@ledlinux ~]# cat sort.txt <br> AA:BB:CC<br> aa:30:1.9<br> cc:50:3.3<br> dd:20:4.2<br> bb:10:2.4<br> ee:40:5.3<br> ee:60:5.1<br> [root@ledlinux ~]# sort -nk 2 -t: sort.txt<br> AA:BB:CC<br> bb:10:2.4<br> dd:20:4.2<br> aa:30:1.9<br> ee:40:5.3<br> cc:50:3.3<br> ee:60:5.1<br> [root@ledlinux ~]# sort -nrk 3 -t: sort.txt<br> ee:40:5.3<br> ee:60:5.1<br> dd:20:4.2<br> cc:50:3.3<br> bb:10:2.4<br> aa:30:1.9<br> AA:BB:CC<br> |