Linux 正则表达式教程:Grep Regex 示例
什么是 Linux 正则表达式?
Linux 正则表达式 是帮助搜索数据和匹配复杂模式的特殊字符。正则表达式缩写为“regexp”或“regex”。它们用于许多 Linux 程序,如 grep、bash、rename、sed 等。
正则表达式的类型
为了便于理解,让我们逐一学习不同类型的正则表达式。
点击 点击这里 如果视频无法访问
基本正则表达式
一些常用的正则表达式命令是 tr、sed、vi 和 grep的。下面列出了一些基本的正则表达式。
图形符号 | 描述 |
---|---|
. | 替换任何字符 |
^ | 匹配字符串的开头 |
$ | 匹配字符串结尾 |
* | 匹配前一个字符零次或多次 |
\ | 代表特殊字符 |
() | 组正则表达式 |
? | 匹配一个字符 |
让我们来看一个例子。
执行 cat sample 查看现有文件的内容
搜索包含字母‘a’的内容。
“^' 匹配字符串的开头。让我们搜索以
仅过滤以字符开头的行。开头不包含字符“a”的行将被忽略。
让我们看另一个例子——
使用以下方法仅选择以 t 结尾的行 $
区间正则表达式
这些表达式告诉我们字符串中某个字符出现的次数。它们是
口语 | 描述 |
---|---|
{不是} | 匹配恰好出现 'n' 次的前一个字符 |
{n,m} | 匹配出现 'n' 次但不超过 m 次的前一个字符 |
{n, } | 仅当前方字符出现 'n' 次或更多时才匹配 |
计费示例:
过滤掉所有包含字符“p”的行
我们希望检查字符 'p' 是否在字符串中连续出现 2 次。为此,语法如下:
cat sample | grep -E p\{2}
注意:您需要在这些正则表达式中添加 -E。
扩展正则表达式
这些正则表达式包含多个表达式的组合。其中一些是:
口语 | 描述 |
---|---|
\+ | 匹配前一个字符的一个或多个出现 |
\? | 匹配前一个字符零次或一次 |
计费示例:
搜索所有字符“t”
假设我们要过滤掉字符“a”位于字符“t”之前的行
我们可以使用类似命令
cat sample|grep "a\+t"
括号扩展
括号扩展的语法是花括号“{}”内的序列或以逗号分隔的项目列表。序列中的起始项和结束项由两个句点“..”分隔。
一些例子:
在上面的例子中,echo 命令使用括号扩展创建字符串。
概要:
- 正则表达式是用于检查字符串中的模式的一组字符
- 它们也被称为“regexp”和“regex”
- 学习正则表达式对于编写脚本很重要
- 一些基本的正则表达式是:
图形符号 | 描述 |
---|---|
. | 替换任何字符 |
^ | 匹配字符串的开头 |
$ | 匹配字符串结尾 |
- 一些扩展的正则表达式是:
口语 | 描述 |
---|---|
\+ |
匹配前一个字符的一个或多个出现 |
\? | 匹配前一个字符零次或一次 |
- 一些区间正则表达式是:
口语 | 描述 |
---|---|
{不是} | 匹配恰好出现 'n' 次的前一个字符 |
{n,m} | 匹配出现 'n' 次但不超过 m 次的前一个字符 |
{n, } | 仅当前方字符出现 'n' 次或更多时才匹配 |
- 括号扩展用于生成字符串。它有助于从一个字符串创建多个字符串。