sort - sort lines of text files
sort命令用于将文本文件内容加以排序。
sort可针对文本文件的内容,以行为单位来排序。
语法:
sort [OPTION]... [FILE]...
sort [OPTION]... --files0-from=F
sort [-bcdfimMnr][-o<输出文件>][-t<分隔字符>][+<起始栏位>-<结束栏位>][--help][--verison][文件]
参数:
sort默认无参数,按照ascii码排序,升序,从小到大
- -n 依照数值的大小排序。
- -r 以相反的顺序来排序。
- -u,--unique 去除重复行
-
with -c, check for strict ordering; without -c, output only the
first of an equal run - -u参数,取唯一,不管是否为相邻行
-
[root@oldboy oldboy]# sort uniq.txt 1 1 aa aa bb cc dd www www [root@oldboy oldboy]# sort uniq.txt -u 1 aa bb cc dd www
[root@oldboy oldboy]# uniq uniq.txt www aa bb aa cc dd 1 aa
-
- -b 忽略每行前面开始出的空格字符。
- -c 检查文件是否已经按照顺序排序。
-
[root@oldboy oldboy]# cat sort_c.txt 11 22 33 44 11 22 33 44 # 显示第5行的11未按排序要求排序,用于检查排序是否有错误 [root@oldboy oldboy]# sort -c sort_c.txt sort: sort_c.txt:5: disorder: 11
-
- -d 排序时,处理英文字母、数字及空格字符外,忽略其他的字符。
- -f 排序时,将小写字母视为大写字母。
- -i 排序时,除了040至176之间的ASCII字符外,忽略其他的字符。
- -m 将几个排序好的文件进行合并。
- -M 将前面3个字母依照月份的缩写进行排序。
- -o<输出文件> 将排序后的结果存入指定的文件。
- -r 以相反的顺序来排序。
- -t<分隔字符> 指定排序时所用的栏位分隔字符。
- -t, --field-separator=SEP
- 默认的SEP分隔符为空格
-
[root@oldboy oldboy]# sort new.txt 1-user01 2-user02 3-user03 4-user04 5-user05 # 分隔符设置为“-”,取第二列作为排序的条件列,-r倒序 [root@oldboy oldboy]# sort new.txt -t '-' -k 2 -r 5-user05 4-user04 3-user03 2-user02 1-user01
-
-k, --key=POS1[,POS2] 指定起始的排序列
-
-k, --key=POS1[,POS2]
start a key at POS1 (origin 1), end it at POS2 (default end of line)
-
- +<起始栏位>-<结束栏位> 以指定的栏位来排序,范围由起始栏位到结束栏位的前一栏位。
示例:
# 数据准备 [root@oldboy oldboy]# cat sort_test.txt a b c d e f g h i j k l m n o p q r s t u v w x y z test Hello hello Welcome www.baidu.com # 以默认的方式对文件进行排序 [root@oldboy oldboy]# sort sort_test.txt Hello Welcome a b c d e f g h hello i j k l m n o p q r s t test u v w www.baidu.com x y z
sort 命令将以默认的方式将文本文件的第一列以ASCII 码的次序排列,并将结果输出到标准输出。
注意,ASCII码的对照表如下:https://baike.baidu.com/item/ASCII/309296?fr=aladdin
[root@oldboy oldboy]# sort sort_test.txt -r z y x www.baidu.com w v u test t s r q p o n m l k j i hello h g f e d c b a Welcome Hello