用sort 和tsort 对文件进行排序

http://tech.ddvip.com   2007年02月27日    社区交流

本文详细介绍用sort 和tsort 对文件进行排序

  最后一组选项处理输入、输出和临时文件。例如,-c选项,当它用于sort -c < file中时,它检查输入文件是否已进行了排序(您也可以使用其它选项),如果已进行了排序,则报告一个错误。这样,在处理可能需要花很长时间进行排序的大型文件之前,可以很方便地对其进行检查。当您将-u选项和-c选项一起使用时,会被解释为一个请求:检查输入文件中不存在两个相同的行。

  当您处理大型文件时还有一个很重要的-T选项,它用于为临时文件(这些临时文件在sort完成工作之后会被除去)指定其它目录,而不是缺省的/tmp目录。

  您可以使用sort来同时处理多个文件,这样做的方式基本上有两种:首先可以使用cat来并置它们,如下所示:

cat file1 file2 file3 | sort > outfile

  或者,可以使用下面这个命令:

sort -m file1 file2 file3 > outfile

  第二种情况有个条件:在将所有输入文件一起进行sort -m之前,每个文件都必须经过排序。这看起来似乎是个不必要的负担,但事实上这加快了工作速度并节约了宝贵的系统资源。对了,别忘了-m选项。在这里您可以使用-u选项来禁止打印相同的行。

  如果需要某种更深奥的排序方法,您可能要查看tsort命令,该命令对文件执行拓扑排序。拓扑排序和标准sort之间的差别如清单 2 所示(您可以从 参考资料下载 happybirthday.txt)。

  清单 2. 拓扑排序和标准排序之间的差别        
    $ cat happybirthday.txt
Happy Birthday to You!
Happy Birthday to You!
Happy Birthday Dear Tux!
Happy Birthday to You!
    $ sort happybirthday.txt
Happy Birthday Dear Tux!
Happy Birthday to You!
Happy Birthday to You!
Happy Birthday to You!
    >$ tsort happybirthday.txt
Dear
Happy
to
Tux!
Birthday
You!
   

  当然,对于tsort的使用来说,这并非一个非常有用的演示,只是举例说明了这两个命令输出的不同。

  tsort通常用于解决一种逻辑问题,即必须通过观察到的部分次序预测出整个次序;例如(来自 tsort 信息页中):

   tsort <<EOF
   a b c
   d
   e f
   b c d e
   EOF

  会产生这样的输出   a
   b
   c
   d
   e
   f
   

  有什么问题或意见吗?我希望收到您的来信 - 请将邮件发送到 jacek@artymiak.com。

  下一次,我们将深入研究tr。

来源:IBM DW中国    作者:Jacek Artymiak    责编:豆豆技术应用

正在加载评论...