Linux sort命令
用于将文本文件内容加以排序。 sort可针对文本文件的内容,以行为单位来排序
语法
sort [-bcdfimMnr][-o<输出文件>][-t<分隔字符>][+<起始栏位>-<结束栏位>][--help][--verison][文件]
参数说明:
-b 忽略每行前面开始出的空格字符。
-c 检查文件是否已经按照顺序排序。
-d 排序时,处理英文字母、数字及空格字符外,忽略其他的字符。
-f 排序时,将小写字母视为大写字母。
-i 排序时,除了040至176之间的ASCII字符外,忽略其他的字符。
-m 将几个排序好的文件进行合并。
-M 将前面3个字母依照月份的缩写进行排序。
-n 依照数值的大小排序。
-o<输出文件> 将排序后的结果存入指定的文件。
-r 以相反的顺序来排序。
-t<分隔字符> 指定排序时所用的栏位分隔字符。
+<起始栏位>-<结束栏位> 以指定的栏位来排序,范围由起始栏位到结束栏位的前一栏位。
示例
1.查看/etc/passwd里的内容并且正向排序
[root@ localhost ~]# sort /etc/passwd
2.在输出行中去除重复行; sort的-u选项
[root@ localhost ~]# cat test.txt
one
two
three
four
five
one
[root@ localhost ~]# sort test.txt
five
four
one
one
three
two
[root@ localhost ~]# sort -u test.txt #去除了重复行
five
four
one
three
two
3.反向排序;sort默认的排序方式是升序,如果想改成降序,就加个-r就搞定了
[root@ localhost ~]# cat test2.txt
1
3
6
2
5
4
[root@ localhost ~]# sort test2.txt
1
2
3
4
5
6
[root@ localhost ~]# sort -r test2.txt # -r参数改为降序
6
5
4
3
2
1
4.将排序后内容输出到文件 ;sort的-o选项
由于sort默认是把结果输出到标准输出,所以需要用重定向才能将结果写入文件,形如sort one.txt > two.txt。
但是,如果你想把排序结果输出到原文件中,用重定向可就不行了
[root@ localhost ~]# sort -r test2.txt > test2.txt
[root@ localhost ~]# cat test2.txt
[root@ localhost ~]#
会将 test2.txt 清空
########### sort -o参数 可以帮助我们
[root@ localhost ~]# cat test2.txt
1
3
6
2
5
4
[root@ localhost ~]# sort -r test2.txt -o test2.txt
[root@ localhost ~]# cat test2.txt
6
5
4
3
2
1
5.依照数值的大小排序,sort的-n选项
我们有时会遇到大的数排在小的数前面,这种情况是由于排序程序将这些数字按字符来排序了。
sort -n #以数值来排序
[root@ localhost ~]# cat number.txt
2
7
9
9
11
3
[root@ localhost ~]# sort number.txt
11
2
3
7
9
9
[root@ localhost ~]# sort -n number.txt
2
3
7
9
9
11
6.sort的-t选项和-k选项
[root@ localhost ~]# cat last.txt
banana:90:3.1
apple:40:3.5
pear:50:4.6
orange:30:6.3
这里内容表示有三列,用冒号隔开了,第一列为水果类型,第二列为水果数量,第三列为水果斤数
如果我想以水果斤数进行排序,就是对第三列进行排序。
sort -t 可以设定间隔符,制定后 用 -k来指定列数
[root@ localhost ~]# sort -n -k 3 -t : last.txt
banana:90:3.1
apple:40:3.5
pear:50:4.6
orange:30:6.3
我们一冒号为间隔符,并对第三列进行数值升序排序