Linux 正则表达式教程:Grep Regex 示例

正则表达式是编程语言中最强大的功能之一。 Linux 文本工具,让您能够使用简洁的模式匹配、筛选和转换数据。本页解释了基本形式、区间形式和扩展形式,以及花括号扩展,并提供了 grep 示例。
什么是 Linux 正则表达式?
Linux 正则表达式是用于搜索数据和匹配复杂模式的特殊字符。正则表达式简写为“regexp”或“regex”。它们被广泛应用于许多 Linux 程序中,例如: grep的bash、rename、sed 等。
正则表达式的类型
为了便于理解,让我们逐一学习不同类型的正则表达式。本页涵盖基本正则表达式、区间正则表达式和扩展正则表达式,最后介绍大括号扩展。
基本正则表达式
一些常用的可与正则表达式配合使用的命令包括 tr、sed 等。 vi以及 grep。下表列出了一些基本的正则表达式。
| 图形符号 | 描述 |
|---|---|
| . | 替换任何字符 |
| ^ | 匹配字符串的开头 |
| $ | 匹配字符串的结尾 |
| * | 匹配零次或多次前一个字符 |
| \ | 代表特殊字符 |
| () | 组正则表达式 |
| ? | 匹配一个字符 |
我们来看一个例子。首先,运行 cat sample 命令来显示现有文件的内容,如下所示。
接下来,搜索包含字母“a”的内容。下面的屏幕截图显示 grep 命令返回了所有包含“a”的行。
插入符号“^”用于匹配字符串的开头。以下示例搜索以字母“a”开头的内容。
仅筛选以特定字符开头的行。不以字符“a”开头的行将被忽略。
我们来看另一个例子。下面的截图再次显示了按行尾过滤之前的示例文件内容。
使用“$”锚点选择以字母“t”结尾的行,如下所示。
区间正则表达式
这些表达式用于指定字符串中某个字符出现的次数。它们列在下面。
| 口语 | 描述 |
|---|---|
| {不是} | 匹配恰好出现 'n' 次的前一个字符 |
| {n,m} | 匹配出现 'n' 次但不超过 m 次的前一个字符 |
| {n, } | 仅当前方字符出现 'n' 次或更多时才匹配 |
例如,筛选出所有包含字符“p”的行。下面的屏幕截图显示了匹配的行。
现在检查字符“p”是否在字符串中连续出现两次。语法如下:
cat sample | grep -E p\{2}
区间匹配结果如下所示。
注意:您需要在这些正则表达式中添加 -E。
扩展正则表达式
这些正则表达式组合了多个表达式。其中一些是:
| 口语 | 描述 |
|---|---|
| \+ | 匹配前一个字符的一个或多个出现 |
| \? | 匹配前一个字符零次或一次 |
例如,搜索所有出现字符“t”的项。下面的屏幕截图显示了结果。
假设你想筛选出字符“a”位于字符“t”之前的行。你可以使用类似下面的命令:
cat sample|grep "a\+t"
输出结果如下图所示。
括号扩展
花括号展开的语法可以是花括号“{}”内的序列或以逗号分隔的项列表。序列中的起始项和结束项之间用两个句点“..”分隔。
下面列出一些示例。
在上面的示例中,echo 命令使用花括号扩展创建字符串,从单个模式生成多个字符串。










