Text-Processing
grep/sed/awk 在非常大的文件上的性能如何?
我想知道 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'
通常比這更快:
sed -n 's/foo/bar/p' file
儘管
grep
第一行中的似乎沒有必要。
LC_ALL=C
順便說一句,如果您正在處理簡單的 ASCII 文本文件,您可以使用這些命令來加速這些命令。請注意,我所有的經驗都是基於 gnu 命令。您也可以嘗試不同的實現並比較速度。