egrep和fgrep的區別


egrep和fgrep是兩種不同的命令列實用程式,用於在檔案中搜索文字模式。這兩個命令通常用於基於Unix的作業系統,例如Linux和macOS。

  • “擴充套件grep”(egrep)是普通grep工具的增強版本。它支援使用擴充套件正則表示式,這使得搜尋比標準grep更復雜。

  • fgrep(代表“固定grep”)旨在搜尋固定字串而不是模式。因此,fgrep比grep和egrep更快,但可定製性也更低。

我們將探討egrep和fgrep的主要區別,包括功能、效能和用例。閱讀本文,瞭解更多關於egrep和fgrep的資訊以及它們之間有何不同。

什麼是egrep?

egrep(擴充套件全域性正則表示式列印)是一個命令列工具,用於在一個或多個檔案中搜索文字模式。它類似於grep實用程式,但包含一些額外的功能,使其更靈活和強大。

grep和egrep之間的一個主要區別是它們都使用“擴充套件正則表示式”,這是一種更復雜的正則表示式型別。這種語法允許更復雜的模式匹配,包括指定重複和匹配多個選項的能力。

egrep的使用場景包括:在一個大型文字檔案集中搜索特定的單詞或短語;搜尋遵循特定模式的行;從日誌檔案中提取特定資料。

讓我們來看一些egrep命令中常用的選項:

  • -i - 執行不區分大小寫的搜尋

  • -v - 搜尋結果反轉,僅返回不匹配模式的行

  • -w - 僅匹配整個單詞

  • -c - 用於計算匹配模式的行數

  • -n - 在每一行之前包含行號

  • -E - 指示模式是擴充套件正則表示式

egrep是GNU grep實用程式系列的成員,可在大多數類Unix作業系統上使用,包括Linux和macOS。

什麼是fgrep?

fgrep(快速全域性正則表示式列印)是一個命令列工具,用於在一個或多個檔案中搜索文字模式。與用於搜尋複雜正則表示式的grep實用程式不同,它更擅長搜尋固定字串。

fgrep在一個或多個檔案中搜索提供的字串或字串集的精確匹配。它不允許使用正則表示式中用於指定模式的特殊字元,例如.,*,^,.等等。

fgrep在搜尋固定字串時,尤其是在一次搜尋多個字串時,比grep更有效率和速度更快。這是使用fgrep的主要優勢之一。因此,fgrep非常適合於在大型文字檔案中搜索特定單詞或短語等任務。

讓我們來看一些fgrep命令中常用的選項:

  • -i - 執行不區分大小寫的搜尋

  • -v - 搜尋結果反轉,僅返回不匹配模式的行

  • -w - 僅匹配整個單詞

  • -c - 用於計算匹配模式的行數

  • -n - 在每一行之前包含行號

fgrep是GNU grep實用程式系列的成員,可在大多數類Unix作業系統上使用,包括Linux和macOS。

egrep和fgrep的區別

下表重點突出了egrep和fgrep的主要區別:

特性

egrep

fgrep

定義

egrep用於在一個或多個檔案中搜索文字模式。它代表擴充套件全域性正則表示式列印。

與用於搜尋複雜正則表示式的grep實用程式不同,fgrep更擅長搜尋固定字串。fgrep代表快速全域性正則表示式列印。

速度

egrep速度較慢

fgrep速度較快

示例

$ egrep -E "5|[[:space:]]*5" ./file.txt

$ fgrep -F "5|[[:space:]]*5" ./file.txt

字串模式

它分析編譯了各種模式的字串或列表

它不分析收集了多個模式的字串或列表。

表示式

egrep命令使用擴充套件正則表示式

fgrep命令使用非擴充套件正則表示式

說明

egrep透過標準輸入接收輸入,這是透過將檔案的內容透過管道傳遞給它來實現的。

fgrep的輸入源是必須在命令列引數中給出的檔案。

結論

總之,選擇egrep還是fgrep取決於手頭任務的具體需求。如果您需要搜尋複雜的模式,egrep是更好的選擇;如果您需要搜尋固定字串,fgrep可能更快。

更新於:2023年3月2日

6000+ 次瀏覽

啟動您的職業生涯

透過完成課程獲得認證

開始
廣告
© . All rights reserved.