夫学须志也,才须学也。非学无以广才,非志无以成学。——诸葛亮
sort命令是对正文数据进行排序并将结果送到标准输出,但是原始文件中的数据不会发生任何改变。其正文数据既可以来自一个文件,也可以来自另一个命令的输出。
sort命令的语法格式如下:
sort [选项]……[文件名]……
其中常用的选项包括以下内容:
-r : 进行反向排序(降序),r是reverse的第一个字母
-f : 忽略字符的大小写,f是folds的第1个字母
-n : 以数字的顺序进行排序,n是numeric的第1个字母
-u : 去掉输出中的重复行,u是unique的第1个字母
-t : -t c表示以字符c作为分隔符
-k : -k N表示按第N个字段排序
-k N1,N2表示先按第N1个字段排序,当第一个字段重复时再按第N2个字段排序。
为了进一步解释sort命令的具体使用方法,先使用cat命令创建一个名为test.sort的文件(输入所有的字符后,在最后一行的开始处按ctrl+d键存盘并退出cat命令)。
goddog@localhost:~$ cat > test.sort
A
C
b
x
d
A
E
f
a
S
u
t
T
S
s
接下来使用sort命令对这个文件中的内容进行反向(-r选项的功能)排序并忽略大小写(-f选项的功能)和去掉重复行(-u选项的功能)。
goddog@localhost:~$ sort -rfu test.sort
x
u
t
S
f
E
d
C
b
A
为了演示sort命令中-t选项和-k选项的用法,将使用系统的口令文件/etc/passwd。首先使用cat命令显示该文件的内容。这里省略了部分输出。
goddog@localhost:~$ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
……
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
从显示结果可以看出/etc/passwd中的每个列的分隔符是:,而且第三列是数字。使用下列命令对/etc/passwd中的内容按第3列排序(-k3选项的功能),其中-t表示列(字段)之间的分隔符是:。命令如下:
goddog@localhost:~$ sort -t: -k3 /etc/passwd
我这里就不显示结果了,其实你会发现sort命令是以ASCII码字符的顺序排序的,因此100、10和11等都排在了2的前面。可以使用带有-n参数的sort命令来重新按数字的顺序排序,命令如下:
goddog@localhost:~$ sort -t: -k3 -n /etc/passwd
今天就分享这么多了,谢谢欣赏^_~!