快速入門
教學
工具和語言
範例
參考
書籍評論
正規表示式工具
grep
PowerGREP
RegexBuddy
RegexMagic
一般應用程式
EditPad Lite
EditPad Pro
語言和函式庫
Boost
Delphi
GNU (Linux)
Groovy
Java
JavaScript
.NET
PCRE (C/C++)
PCRE2 (C/C++)
Perl
PHP
POSIX
PowerShell
Python
R
Ruby
std::regex
Tcl
VBScript
Visual Basic 6
wxWidgets
XML Schema
Xojo
XQuery 和 XPath
XRegExp
資料庫
MySQL
Oracle
PostgreSQL
本網站其他內容
簡介
正規表示式快速入門
正規表示式教學
替換字串教學
應用程式和語言
正規表示式範例
正規表示式參考
替換字串參考
書籍評論
可列印 PDF
關於本網站
RSS 摘要和部落格

grep 是什麼?

Grep 是一種工具,源自 1970 年代的 UNIX 世界。它可以在檔案和資料夾(UNIX 中的目錄)中搜尋,並檢查這些檔案中的哪些列符合給定的 正規表示式。Grep 會輸出檔案名稱和列號,或與正規表示式相符的實際列。總而言之,這是一個非常有用的工具,可用於在電腦上的任何地方尋找儲存的資訊,即使(或特別是)您不知道實際要在哪裡尋找。

使用 grep

如果您輸入 grep regex *.txt,grep 會搜尋目前資料夾中的所有文字檔案。它會將 regex 套用至檔案中的每一列,並列印(即顯示)找到相符項目的每一列。這表示 grep 本質上是基於列的。正規表示式相符項目無法跨越多列。

如果您喜歡在命令列上工作,傳統的 grep 工具會讓許多工作變得更容易。所有 Linux 發行版(除了極小的軟碟機版本)都預設安裝 grep 的版本,通常是 GNU grep。如果您使用 Microsoft Windows,則需要另外下載並安裝它。如果您使用 Borland 開發工具,則已經安裝了 Borland 的 Turbo GREP。

grep 不僅適用於 globbed 檔案,也適用於您在標準輸入中提供的任何內容。與標準輸入搭配使用時,grep 會列印從標準輸入讀取的所有符合 regex 的列。例如:Linux find 指令會對目前目錄進行 glob,並列印找到的所有檔案名稱,因此 find | grep regex 只會列印與 regex 相符的檔案名稱。

Grep 的 Regex 引擎

大多數版本的 grep 使用 regex 指導的 引擎,例如本網站 regex 教學課程 中所討論的 regex 風格。然而,grep 的 regex 風格非常有限。在 POSIX 系統上,它使用 POSIX 基本正規表示式

grep 的加強版本稱為 egrep。它使用 文字導向引擎。由於 grep 和 egrep 都不支援任何特殊功能,例如 延遲重複環顧,而且因為 grep 和 egrep 只會指出是否在特定行上找到配對,因此這個區別並不重要,除了文字導向引擎比較快。在 POSIX 系統上,egrep 使用 POSIX 延伸正規表示式。儘管名稱為「延伸」,但 egrep 幾乎與 grep 相同。它只使用略有不同的 regex 語法,並新增對交替的支援,但失去對反向參照的支援。

GNU grep 是 Linux 上最受歡迎的 grep 版本,它同時使用文字導向和 regex 指導引擎。如果您使用反向參照,它會使用 regex 指導引擎。否則,它會使用較快的文字導向引擎。同樣地,對於 grep 所設計的任務,這對您這個使用者來說並不重要。如果您輸入「grep」指令,您將使用 GNU 基本正規表示式語法。如果您輸入「egrep」指令,您將使用 GNU 延伸正規表示式語法。GNU 版本的 grep 和 egrep 具有完全相同的功能,包括 grep 的交替和 egrep 的反向參照。它們只使用略有不同的語法。

超越指令列

如果您喜歡在命令列上工作,那麼傳統的 grep 工具就是您的選擇。但如果您喜歡使用圖形使用者介面,則有許多類似的 grep 工具可供 Windows 和其他平台使用。只要在您最愛的軟體下載網站上搜尋「grep」即可。不幸的是,許多 grep 工具附帶的說明文件很差,讓您必須自行找出它們確切使用的正規表示式類型。並非宣稱與 Perl 相容就表示它們實際上相容。有些幾乎完全相容(但從未完全相同),但當您想要使用進階且非常有用的建構(例如 環顧)時,其他工具則會慘不忍睹。

PowerGREP 是一款 Windows 導向的 grep 工具,在眾多工具中脫穎而出。

| 快速入門 | 教學 | 工具和語言 | 範例 | 參考 | 書籍評論 |

| grep | PowerGREP | RegexBuddy | RegexMagic |

| EditPad Lite | EditPad Pro |

| Boost | Delphi | GNU (Linux) | Groovy | Java | JavaScript | .NET | PCRE (C/C++) | PCRE2 (C/C++) | Perl | PHP | POSIX | PowerShell | Python | R | Ruby | std::regex | Tcl | VBScript | Visual Basic 6 | wxWidgets | XML Schema | Xojo | XQuery 和 XPath | XRegExp |

| MySQL | Oracle | PostgreSQL |