快速入门
教程
工具和语言
示例
参考
书评
正则表达式工具
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 是一个起源于 20 世纪 70 年代 UNIX 世界的工具。它可以搜索文件和文件夹(在 UNIX 中为目录),并检查这些文件中的哪些行与给定的 正则表达式 匹配。Grep 将输出文件名和行号或与正则表达式匹配的实际行。总而言之,这是一个非常有用的工具,用于查找存储在计算机上的任何位置的信息,即使(或特别是)你不知道在哪里查找。

使用 grep

如果你键入 grep regex *.txt,grep 将搜索当前文件夹中的所有文本文件。它将把正则表达式应用于文件中的每一行,并打印(即显示)找到匹配项的每一行。这意味着 grep 本质上是基于行的。正则表达式匹配不能跨越多行。

如果你喜欢在命令行上工作,传统的 grep 工具将使许多任务变得更容易。所有 Linux 发行版(除了基于软盘的小型发行版)默认安装 grep 的一个版本,通常是 GNU grep。如果你使用 Microsoft Windows,你需要单独下载并安装它。如果你使用 Borland 开发工具,你已经安装了 Borland 的 Turbo GREP。

grep 不仅可以处理 globbed 文件,还可以处理你在标准输入中提供的任何内容。当与标准输入一起使用时,grep 将打印从标准输入中读取的所有与正则表达式匹配的行。例如:Linux find 命令将 glob 当前目录并打印它找到的所有文件名,因此 find | grep regex 将只打印与正则表达式匹配的文件名。

Grep 的正则表达式引擎

大多数版本的 grep 使用正则表达式导向的 引擎,就像本网站 正则表达式教程 中讨论的正则表达式风格一样。但是,grep 的正则表达式风格非常有限。在 POSIX 系统上,它使用 POSIX 基本正则表达式

grep 的增强版本称为 egrep。它使用 文本导向引擎。由于 grep 和 egrep 都不支持任何特殊功能,如 惰性重复环视,而且 grep 和 egrep 仅指示在特定行上是否找到匹配项,因此除了文本导向引擎更快之外,此区别并不重要。在 POSIX 系统上,egrep 使用 POSIX 扩展正则表达式。尽管名称为“扩展”,但 egrep 与 grep 几乎相同。它只是使用略微不同的正则表达式语法并添加了对交替的支持,但失去了对反向引用的支持。

GNU grep 是 Linux 上最流行的 grep 版本,它同时使用文本导向和正则表达式导向引擎。如果您使用反向引用,它将使用正则表达式导向引擎。否则,它将使用更快的文本导向引擎。同样,对于 grep 所设计的任务,这对您(用户)来说并不重要。如果您键入“grep”命令,您将使用 GNU 基本正则表达式语法。如果您键入“egrep”命令,您将使用 GNU 扩展正则表达式语法。GNU 版本的 grep 和 egrep 具有完全相同的功能,包括 grep 的交替和 egrep 的反向引用。它们仅使用略微不同的语法。

超越命令行

如果您喜欢在命令行上工作,那么传统的 grep 工具适合您。但是如果您喜欢使用图形用户界面,则有许多类似 grep 的工具可用于 Windows 和其他平台。只需在您最喜欢的软件下载网站上搜索“grep”即可。不幸的是,许多 grep 工具附带的文档很差,需要您自己弄清楚它们确切使用哪种正则表达式风格。这并不是因为它们声称与 Perl 兼容,而是它们实际上是兼容的。有些几乎完全兼容(但永远不会完全相同),但当您想要使用高级且非常有用的构造(如 环视)时,其他则会惨败。

一款在众多 Windows grep 工具中脱颖而出的工具是 PowerGREP

| 快速入门 | 教程 | 工具和语言 | 示例 | 参考 | 书籍评论 |

| 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 |