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' 次或更多时才匹配
  • 括号扩展用于生成字符串。它有助于从一个字符串创建多个字符串。