題 何時使用egrep而不是grep?


我現在正準備進行Linux終端評估,我試圖谷歌並發現大多數資源都指的是基本的“grep”而不是更強大的“egrep” - 好吧,這至少是教授在講座中所說的。

我總是使用小樣本,所以性能調整是一個太遙遠的事情。

所以基本上我想知道有哪些方面我必須切換到egrep以更好的方式做到這一點?現在使用基本的“grep”安全嗎?會有潛在的風險嗎?

對於我對Linux shell命令的了解有限,對於我來說,手冊頁看起來像個迷宮,說實話,我沒有花太多時間來理解命令提供的所有功能。


8
2018-04-07 01:53


起源




答案:


egrep = grep -E

http://www.opengroup.org/onlinepubs/007908799/xcu/grep.html

“使用擴展常規匹配   表達式。對待每個模式   指定為ERE,如中所述   XBD規範,擴展   常用表達 。如果有的話   ERE模式匹配輸入行,   線將匹配。空ERE   匹配每一行。“

所以,有了egrep,你可以使用 +, ?, | and ()


10
2018-04-07 02:06



@omfgroflmao:那有什麼區別嗎?好吧,現在我覺得只關注“grep”教程而不用擔心“egrep”命令:)我感到很自在:)感謝您的提示!
不管你怎麼稱呼它 egrep 要么 grep -E,擴展的正則表達式通常會使復雜的模式更短,因此通過刪除大量的``來更容易閱讀。這不是關於性能,而是在某種意義上更好的方式。 - Cascabel


egrep已被棄用。使用 grep -E。注意 grep 為你找到字符串模式。如果你想在找到它們後對你的字符串做一些事情,那麼你必須管道到一個字符串處理工具,如 awk (或殼)。您應該研究的工具是 awk作為 awk 為你找到字符串也很像 grep 並在需要時為您處理。它有一個方便的工具grep / sed / etc做的所有事情。


5
2018-04-07 02:56



@ ghostdog74:啊,所以建議不要使用egrep ...我認為這是替換grep ...感謝您的提示!
只是為了記錄,在包括我的許多機器上,egrep是grep的鏈接。也就是說,它們實際上是完全相同的命令,但根據您調用它們的方式表現不同。 - MJB