【发布时间】:2011-07-06 15:02:21
【问题描述】:
我正在尝试将 UNIX/Linux 脚本中的许多已排序文件与 sort -m 合并,我注意到 sort 首先将结果写入临时文件,然后将其复制到目标。我对-m 的理解是它假定文件已排序,因此完全没有必要使用临时文件,而且它会浪费硬盘空间和 CPU 周期(我在管道中使用 sort 时会卡住等待排序输出任何东西。)有没有办法告诉sort在合并排序文件时不要使用临时文件?还是没有更好的版本?
确切的 CL 如下所示:
$ sort -m -s -t '_' -k 1,1n -k 2,2n <(gunzip <file_1) [...] <(gunzip <file_n) | gzip >output
我正在使用来自 GNU coreutils 5.97 的 sort。
【问题讨论】:
-
我认为因为
sort是作为通用实用程序编写的,所以他们不认为您的情况会增加程序的复杂性,因此依赖于 tmp 文件的 std 排序机制。 ....编写一个 awk 脚本来循环输入文件列表,比较每一行,从一个文件中打印“最低”值,从该文件中获取下一条记录,然后比较所有再次记录,希望打印下一个“最低”记录。您可能会遇到打开文件的系统限制,但这对于您编写的任何解决方案都是如此。首先测试4。祝你好运
标签: unix sorting command-line temporary-files