Luk*_*ord 6 performance grep sed awk text-processing
我想知道 grep、sed 和 awk 是否是在非常大的文件中查找数据的可行工具。
假设我有一个 1TB 的文件。如果我想处理该文件中的文本,如果我使用单独的命令 grep、sed 和 awk 并将它们混合在一起,时间框架会是什么样子。
显然,具体的答案是不可能的,因为结果会因硬件规格而异,但如果我能得到一个有用的一般估计。
一般来说我会说grep是最快的,sed也是最慢的。当然,这取决于你到底在做什么。我发现awk比sed.
如果您不需要真正的正则表达式而只需要简单的固定字符串(选项 -F),您可以加速 grep。
如果你想在管道中一起使用 grep、sed、awk,那么我会尽可能先放置 grep 命令。
例如这个:
grep -F "foo" file | sed -n 's/foo/bar/p'
Run Code Online (Sandbox Code Playgroud)
通常比这更快:
sed -n 's/foo/bar/p' file
Run Code Online (Sandbox Code Playgroud)
虽然grep第一行中的似乎没有必要。
顺便说一句,LC_ALL=C如果您正在处理简单的 ASCII 文本文件,您可以使用这些命令来加速。
请注意,我的所有经验都基于 gnu 命令。您也可以尝试不同的实现并比较速度。