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