专业编程基础技术教程

网站首页 > 基础教程 正文

Linux中使用sort命令进行排序(linux sort排序)

ccvgpt 2024-08-02 12:07:28 基础教程 11 ℃

夫学须志也,才须学也。非学无以广才,非志无以成学。——诸葛亮

Linux中使用sort命令进行排序(linux sort排序)

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


今天就分享这么多了,谢谢欣赏^_~!

Tags:

最近发表
标签列表