Linux核心应用命令速查
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

2.10 sort:按顺序显示文件内容

作用:按顺序显示文件内容。

用法:sort [选项]...[文件]...

主要选项如下。

● -b:忽略每行前面开始的空格字符。

● -c:检查文件是否已经按照顺序排序。

● -d:排序时,除了英文字母、数字及空格字符外,忽略其他的字符。

● -f:排序时,将小写字母视为大写字母。

● -i:排序时,除了040~176之间的ASCII字符外,忽略其他的字符。

● -m:将几个排序好的文件进行合并。

● -M:作为月份比较。

● -n:依照数值的大小排序。

● -o<输出文件>:将排序后的结果存入指定的文件。

● -r:以相反的顺序来排序。

● -t<分隔字符>:指定排序时所用的栏位分隔字符。

● +<起始栏位>−<结束栏位>:以指定的栏位来排序,范围由起始栏位到结束栏位的前一栏位。

说明:sort命令有许多非常实用的选项,这些选项最初是用来对数据库用法的文件内容进行各种排序操作的。实际上,可以认为sort命令是一个非常强大的数据管理工具,用来管理内容类似数据库记录的文件。sort命令将逐行对文件中的内容进行排序,如果两行的首字符相同,该命令将继续比较这两行的下一个字符,如果还相同,将继续进行比较。如果不指定输入文件,使用“-”,则表示排序内容来自标准输入。sort排序是根据从输入行抽取的一个或多个关键字进行比较来完成的。排序关键字定义了用来排序的最小的字符序列。默认情况下以整行为关键字按ASCII字符顺序进行排序。

应用实例如下。

(1)对密码文件进行排序

        # sort /etc/passwd > /etc/passwd-new
        # mv /etc/passwd-new /etc/passwd

注意 不能将输出直接发送到输入文件,因为这会破坏输入文件。这就是为何需要将它发送到临时文件中,然后将该文件重命名为/etc/passwd的原因。如果想倒转排序的次序,则应当使用−r选项。还可以用−u选项来禁止打印相同的行。

(2)用“sort -m”排序合并多个日志

许多大型的Web服务使用DNS轮循来实现负载均衡。对于使用多个同样角色的服务器做前台的Web服务,多个服务器的分布使得日志的分析统计也变得有些麻烦。可以使用sort合并:

        sort -m -t " " -k 4-o log_all log1 log2 log3