我想知道 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 命令。您还可以尝试不同的实现并比较速度。