sort命令
作用
主要用于对文本内容进行排序
语法:
sort [-bcfMnrtku][源文件][-o 输出文件]
参数:
-b 忽略每行前面开始出的空格字符。
-c 检查文件是否已经按照顺序排序。
-f 排序时,忽略大小写字母。
-M 将前面3个字母依照月份的缩写进行排序。
-n 依照数值的大小排序。
-o<输出文件> 将排序后的结果存入指定的文件。
-r 以相反的顺序来排序。
-t<分隔字符> 指定排序时所用的栏位分隔字符。
-k 选择以哪个区间进行排序
-u 删除重复行
示例
- sort处理文件的时候是以行为单位,相互比较,原则是从首字符依次向后,依次按ASCII码值进行比较,最后将他们按升序输出
[[email protected] ~]$ cat test
dddddddddddddd
ccccccccccc
eeeeeeeeee
aaaaaaaa
bbbbbbb
abcd
bcd
3
2
5
1
4
[[email protected] ~]$ sort test
1
2
3
4
5
aaaaaaaa
abcd
bbbbbbb
bcd
ccccccccccc
dddddddddddddd
eeeeeeeeee
- 删除重复行 -u
[[email protected] ~]$ cat test
bbbbb
aaaaa
cccccc
bbbbb
bbbbbaa
aaaaa
[[email protected] ~]$ sort -u test
aaaaa
bbbbb
bbbbbaa
cccccc
- 降序排列 -r
[[email protected] ~]$ sort -ur test
cccccc
bbbbbaa
bbbbb
aaaaa
- 把输出结果存到另一个文件中
一般情况下用‘>‘即可重定向到另一个文件,但是需要直接修改本文件时,用‘>‘就会把原文件清空,所以需要用到-o参数
[[email protected] ~]$ cat test
bbbbb
aaaaa
cccccc
bbbbb
bbbbbaa
aaaaa
[[email protected] ~]$ sort -ur test > 1.txt
[[email protected] ~]$ cat 1.txt
cccccc
bbbbbaa
bbbbb
aaaaa
[[email protected] ~]$ cp test test1
[[email protected] ~]$ sort -ur test > test ---->定向到原文件
[[email protected] ~]$ cat test
空
[[email protected] ~]$ sort -ur test1 -o test1
[[email protected] ~]$ cat test1
cccccc
bbbbbaa
bbbbb
aaaaa
- 使用数值来排序 -n
默认sort会以行首第一个字符作比较排序,但是,当出现多位数字作比较时候,就得加-n,否则比较不成功
[[email protected] ~]$ sort test
1
10
12
14
2
3
4
5
会发现排序不对,现在加上-n
[[email protected] ~]$ sort -n test
1
2
3
4
5
10
12
14
- 指定间隔符(-t)和列数(-k)进行排序
[[email protected] ~]$ cat test
一月 192.168.254.1 109
二月 192.168.254.2 201
三月 192.168.254.4 344
现在要按访问次数从大到小排序,以空格为分隔符,指定比较第三列
[[email protected] ~]$ sort -n -r -k 3 -t ‘ ‘ test
三月 192.168.254.4 344
二月 192.168.254.2 201
一月 192.168.254.1 109