sort:对数据进行排序
处理大量的数据的时候,常用的命令是sort命令,sort命令是对数据进行排序的,默认情况下,sort命令按照会话指定的默认语言的排序规则对文本文件中的数据进行排序
举例1:
cat file1
one
two
three
four
five
sort file1
five
four
one
three
two
举例2:
cat file2
1
2
100
45
3
sort file2
1
100
2
3
45
默认情况下,sort命令会把数字当做字符来执行标准的字符排序,产生的输出可能根本就不是你要的,解决这个问题可用 -n 参数,它会告诉sort命令把数字识别成数字而不是字符,并按值排序
sort -n file2
1
2
3
45
100
sort命令参数
-b 排序时忽略起始的空白
-C 不排序,如果数据无序也不要报告
-c 不排序,但检查输入数据是不是已排序
-d 排序时,处理英文字母、数字及空格字符外,忽略其他的字符
-f 默认情况下,会将大写字母排在前面,这个参数会忽略大小写
-g 按通用数值来排序(跟-n不同,把值当成浮点数来排序,支持科学计数法表示的值)
-i 排序时,除了040至176之间的ASCII字符外,忽略其他的字符
-k 排序从POSI位置开始;如果指定了POS2的话,到POS2位置结束
-M 将前面3个字母依照月份的缩进进行排序
-m 将几个排序好的文件进行合并
-n 按字符串的数值来排序(并不是转换成浮点数)
-o 将排序结果写到指定的文件中
-R 按随机生成的散列表的键值排序
-r 反序排序(升序变成降序)
-S 指定使用的内存大小
-s 禁用最后重排序比较
-T 指定一个位置来存储来临时工作文件
-t 指定一个用来区分键位置的字符
-u 和-c参数一起使用时,检查严格排序;不和-c参数一起使用时,仅输出第一例相似的两行
-z 用NULL字符作为行尾,而不是用换行符
sort的-u选项它的作用很简单,就是在输出行中去除重复行
cat file3
apple
banana
pear
orange
apple
pear
sort -u file3
apple
banana
orange
pear
sort的-t 选项和-k选项
这个文件有三列,列与列之间用“-”隔开了,第一列表示年,第二列表示月,第三列表示日。以月来排序,也就是第二列来排序,sort提供-t选项,后面可以设定间隔符。指定了间隔符之后,就可以用-k来指定列数了
cat file4
2018-11-20
2018-01-22
2018-04-24
2018-10-11
sort -n -k 2 -t'-' file4
2018-01-22
2018-04-24
2018-10-11
2018-11-20