文件管理 · 2022年02月20日 0

sort命令 – 排序文件并输出

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