5.3 使用sort排序
很多情况下需要对无序的数据进行排序,这时就要用到sort排序了。下面列出了该命令常用的参数:
- [root@localhost ~]# sort [-ntkr]
文件名
#-n
采取数字排序
#-t
指定分隔符
#-k
指定第几列
#-r
反向排序
为演示sort的用法,这里首先创建一个文件,文件名和文件内容如下:
- [root@localhost ~]# cat sort.txt
b:3
c:2
a:4
e:5
d:1
f:11
下面对输出的内容进行排序:
- [root@localhost ~]# cat sort.txt | sort
a:4
b:3
c:2
d:1
e:5
f:11
#
对输出内容直接排序时,默认按照每行的第一个字符进行排序
下面表示对输出内容进行反向排序:
- [root@localhost ~]# cat sort.txt | sort -r
f:11
e:5
d:1
c:2
b:3
a:4
#
和上面的例子的输出相反
可观察到,sort.txt文件具有一个特点,第一个字符是字母,第三个字符是数字,中间用冒号隔开。这样就可以用-t指定分隔符,并用-k指定用于排序的列了。
- [root@localhost ~]# cat sort.txt | sort -t ":" -k 2
d:1
f:11
c:2
b:3
a:4
e:5
#
你可能已注意到,当前的排序是按照数字列的部分进行的。不过,第2
行为什么是11
呢?
那是因为当前的排序并不是按照“数字值来进行的”
在上面的命令中,当前的排序是按照以冒号隔开的第二部分进行的,不过读者是否注意到,第二行是f:11,这一行不应该在最后一行吗?因为11是最大的。但其实命令的输出并不是错误的,因为按照排序的方式,只会看第一个字符,而11第一个字符是1,按照字符来排序那它确实比2小。如果想要指定按照“数字”的方式进行排序,则需要加上-n参数。
- [root@localhost ~]# cat sort.txt | sort -t ":" -k 2 -n
d:1
c:2
b:3
a:4
e:5
f:11