10、sort排序命令
语法:sort [-option] filename
参数:
- -n : 以数字顺序排序
- -r : 倒序排列
- -u : 剔除重复
- -k : 指定排序的列,默认为第一列
- -t : 指定列间的分隔符,默认为空格(不支持复杂分隔符,如“::”)
1).使用不带参数的sort命令对/home/t2/a.txt文件内容进行排序
[root@admin t2]# sort a.txt 或者 [root@admin t2]# ls a.txt | sort
&
%
12edf
2
234123 ^
342sdfs
546
adfasd this is last one %
adsftgrt
c
cfwesdf
er
fgth
w
从上面的结果可以看出,这里的数字是以其对应的ASCII码的大小为依据的,而同类型的排序中又是首先按第一位字符排序,然后按第二位字符排序,依次类推
2).使用-n参数排列
[root@admin t2]# sort -n a.txt 或cat a.txt | sort -n
&
%
adfasd this is last one %
adsftgrt
c
cfwesdf
er
fgth
w
2
12edf
342sdfs
546
234123 ^
这里为什么数字开头的还排到了字母开头的后边呢?很奇怪吧!原因就是-n参数是以十进制的数字排序的,如果前面不是数字的就会被认成0,所以字母开头的被排在数字开头的前面
3).按数字倒序排列
[root@admin t2]# cat a.txt | sort -nr
234123 ^
546
342sdfs
12edf
2
w
fgth
er
cfwesdf
c
adsftgrt
adfasd this is last one %
%
&
4).通过改变默认分隔符和排序的列进行排序
[root@admin etc]# cat passwd | sort -t : -k 3
[root@admin etc]# cat passwd | sort -n -t : -k 3
上面命令的意思是对/etc/passwd文件的内容改变默认分隔符为“ :”,然后对第3列进行排序。