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 命令。您也可以嘗試不同的實現並比較速度。

相關內容