Text-Processing

grep/sed/awk 在非常大的文件上的性能如何?

  • September 22, 2016

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

假設我有一個 1TB 的文件。如果我想處理該文件中的文本,如果我使用單獨的命令 grep、sed 和 awk 並將它們混合在一起,時間框架會是什麼樣子。

顯然,不可能給出具體的答案,因為結果會根據硬體規格而有所不同,但如果我能得到一個一般的估計,那將是有幫助的。

一般來說,我會說grep是最快的,sed是最慢的。當然,這取決於你到底在做什麼。我發現awksed.

如果您不需要真正的正則表達式而只需要簡單的固定字元串(選項 -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 命令。您也可以嘗試不同的實現並比較速度。

引用自:https://unix.stackexchange.com/questions/311514