grep/sed/awk 在非常大的文件上执行得如何?

grep/sed/awk 在非常大的文件上执行得如何?

我想知道 grep、sed 和 awk 是否是在非常大的文件中查找数据的可行工具。

假设我有一个 1TB 的文件。如果我想处理该文件中的文本,如果我使用单独的命令 grep、sed 和 awk,并将它们混合在一起,时间范围会是什么样子。

显然,不可能给出具体的答案,因为结果会根据硬件规格而有所不同,但如果我能得到一个总体估计,那将会有所帮助。

答案1

一般来说,我会说grep是最快的,sed也是最慢的。当然,这取决于您具体在做什么。我发现awk比 快得多sed

如果不需要真正的正则表达式而只需要简单的固定字符串(选项 -F),则可以加快 grep 的速度。

如果你想在管道中一起使用 grep、sed、awk,那么如果可能的话,我会首先放置 grep 命令。

例如这个:

grep -F "foo" file | sed -n 's/foo/bar/p'

通常比这更快:

sed -n 's/foo/bar/p' file

尽管grep第一行中的 似乎没有必要。

LC_ALL=C顺便说一句,如果您正在处理简单的 ASCII 文本文件,您可以使用这些命令来加快速度。

请注意,我的所有经验都是基于 gnu 命令。您还可以尝试不同的实现并比较速度。

相关内容