9

我的工作涉及从非常大的文件中对大量字段进行排序。我通常使用sortbash 中的命令来执行此操作。不幸的是,当我开始排序时,我永远无法确定需要多长时间。我应该等待结果出现,还是应该在它运行时开始处理其他事情?

有没有可能的方法来了解排序的进展情况或工作速度有多快?

$ cut -d , -f 3 VERY_BIG_FILE | sort -du > output
4

3 回答 3

11

不,GNUsort不做进度报告。

但是,如果您sort只是使用删除重复项,并且您实际上并不关心排序,那么有一种更具可扩展性的方式来做到这一点:

awk '! a[$0]++'

这会在看到一行后立即写出第一次出现的行,这可以让您了解进度。

于 2013-04-04T15:59:05.247 回答
4

您可能想尝试pv,它应该可以让您很好地了解管道中在吞吐量方面发生的情况。

pv示例(未经测试)在命令前后注入sort以了解吞吐量:

$ cut -d , -f 3 VERY_BIG_FILE | pv -cN cut | sort -du | pv -cN sort > output

编辑:我错过了排序命令中的 -u ,因此首先计算行才能获得百分比输出是无效的。从我的答案中删除了那部分。

于 2013-04-05T07:42:12.150 回答
-4

你可以在后台执行你的“排序”,你会得到提示,你可以做其他工作

$sort ...... & # (& 表示在后台运行)

于 2013-04-04T16:18:12.540 回答