是否可以在linux中显示排序的进度?

Cor*_*ein 9 linux sorting bash

我的工作涉及大量文件中的大量排序字段.我通常使用sortbash中的命令执行此操作.不幸的是,当我开始排序时,我真的不确定要花多长时间.我应该等待一秒钟才能显示结果,还是应该在运行时开始处理其他内容?

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

$ cut -d , -f 3 VERY_BIG_FILE | sort -du > output
Run Code Online (Sandbox Code Playgroud)

Fre*_*Foo 10

不,GNU sort不会进行进度报告.

但是,如果您sort只是用来删除重复项,并且实际上并不关心排序,那么有一种更具伸缩性的方法:

awk '! a[$0]++'
Run Code Online (Sandbox Code Playgroud)

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


Adr*_*rth 5

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

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

$ cut -d , -f 3 VERY_BIG_FILE | pv -cN cut | sort -du | pv -cN sort > output
Run Code Online (Sandbox Code Playgroud)

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