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可能更快。
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP