首页 理论教育 LinuxShell编程:排序命令sort

LinuxShell编程:排序命令sort

时间:2023-11-18 理论教育 版权反馈
【摘要】:sort命令的作用是排序。下面对/etc/passwd文件中的账号名进行几次随机排序,每次结果都不一样:在讲解sort命令的选项-n之前,先看一个纯数值的文件:下面对文件number.txt排序:sort命令对纯数值文件的内容排序时,将数值按照普通字符串对待,对其按照字典顺序进行升序排序。sort命令的输出显示在屏幕。如果一定让排好序的文件名就叫原来的文件名,可以分两步命令实现,先运行sort colleague.txt>colleague_sort.txt,再运行cpcolleague_sort.txtcolleague.txt。

LinuxShell编程:排序命令sort

sort命令的作用是排序。

前面提到过,想知道文件/etc/passwd中的账号名,用如下命令:

账号名没有按照字典顺序升序或者降序排列。而sort命令默认进行升序排列:

选项-r或者--reverse用来颠倒排列顺序:

选项-u用来去掉重复的行,保证每一行的内容是唯一的(unique)。先查看文件/etc/passwd中各个账号的默认shell,即文件的第7列:

可见,/bin/sh显示了3次,用命令sort-u可以对其排序,并去掉重复的行:

选项-R和--random-sort的作用是随机排序。下面对/etc/passwd文件中的账号名进行几次随机排序,每次结果都不一样:

在讲解sort命令的选项-n之前,先看一个纯数值的文件:

下面对文件number.txt排序:

sort命令对纯数值文件的内容排序时,将数值按照普通字符串对待,对其按照字典顺序进行升序排序。因为1在2的前面,12、15、19等都在2的前面,就像a在b的前面,单词about、ahead、arrive等在字典里都排在b的前面。(www.xing528.com)

选项-n的作用是让sort命令按照数值大小排序(numeric-sort):

前面介绍sort命令时,每行只有一列数据,实际上多列的情况更常见。下面的文件colleague.txt有3列,分别是名字、年龄、专业,域分隔符是〈Tab〉键:

对文件colleague.txt排序:

上面的结果是以整行为单位的升序排序,实际上,几乎就是按照名字的升序排序,因为名字处在每行的最前面。如果希望按照第二列,即按照年龄排序,怎么做?使用选项-k2可以对第二列排序,因为第二列是数值,所以加上选项-n可以确保年龄由小到达排序:

按照第三列排序:

可见,是按照第三列的单词的字典顺序排的序。

文件colleague.txt的域分隔符是默认的〈Tab〉键。如果不是话,需要用选项-t来指定域分隔符。

sort命令的输出显示在屏幕。如果希望sort的输出存入文件,可以使用输出重定向,如sortcolleague.txt>colleague_sort.txt。重定向的文件名不能与原文件名重名,即不能运行sort colleague.txt>colleague.txt,否则文件colleague.txt的内容被清空,字节数变为0。

如果一定让排好序的文件名就叫原来的文件名,可以分两步命令实现,先运行sort colleague.txt>colleague_sort.txt,再运行cpcolleague_sort.txtcolleague.txt。还有一种简便的方法,就是使用sort命令的选项-o。-o用来指定sort命令的输出(output)存放的文件名,它可以与原来的名字重名,如:

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈