我的工作涉及从非常大的文件中对大量字段进行排序。我通常使用sort
bash 中的命令来执行此操作。不幸的是,当我开始排序时,我永远无法确定需要多长时间。我应该等待结果出现,还是应该在它运行时开始处理其他事情?
有没有可能的方法来了解排序的进展情况或工作速度有多快?
$ cut -d , -f 3 VERY_BIG_FILE | sort -du > output
不,GNUsort
不做进度报告。
但是,如果您sort
只是使用删除重复项,并且您实际上并不关心排序,那么有一种更具可扩展性的方式来做到这一点:
awk '! a[$0]++'
这会在看到一行后立即写出第一次出现的行,这可以让您了解进度。
您可能想尝试pv,它应该可以让您很好地了解管道中在吞吐量方面发生的情况。
pv
示例(未经测试)在命令前后注入sort
以了解吞吐量:
$ cut -d , -f 3 VERY_BIG_FILE | pv -cN cut | sort -du | pv -cN sort > output
编辑:我错过了排序命令中的 -u ,因此首先计算行才能获得百分比输出是无效的。从我的答案中删除了那部分。
你可以在后台执行你的“排序”,你会得到提示,你可以做其他工作
$sort ...... & # (& 表示在后台运行)