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

什么是 Linux 正则表达式?

Linux 正则表达式是特殊的字符,它们有助于搜索数据和匹配复杂模式。正则表达式的简写是“regexp”或“regex”。它们被用于许多 Linux 程序,如 grep、bash、rename、sed 等。

正则表达式的类型

为了便于理解,我们逐一学习不同类型的正则表达式。

如果视频无法访问,请点击此处

基本正则表达式

一些常用的正则表达式命令包括 tr、sed、vi 和 grep。下面列出了一些基本正则表达式。

符号 描述
. 替换任意字符
^ 匹配字符串的开头
$ 匹配字符串的结尾
* 匹配前一个字符零次或多次
\ 表示特殊字符
() 对正则表达式进行分组
? 匹配恰好一个字符

让我们看一个例子。

执行 cat sample 查看现有文件的内容

Basic Regular expressions

搜索包含字母“a”的内容。

Basic Regular expressions

^”匹配字符串的开头。我们来搜索以 a 开头的内容。

Basic Regular expressions

只过滤以字符开头的行。忽略不以字符“a”开头的行。

让我们来看另一个例子 –

Basic Regular expressions

使用 $ 只选择以 t 结尾的行

Basic Regular expressions

区间正则表达式

这些表达式告诉我们字符在字符串中出现的次数。它们是:

表达式 描述
{n} 精确匹配前一个字符出现“n”次
{n,m} 匹配前一个字符出现“n”次,但不能超过 m 次
{n, } 仅当前一个字符出现“n”次或更多次时才匹配

示例

过滤掉所有包含字符“p”的行

Interval Regular expressions

我们想检查字符“p”在一个字符串中连续出现正好 2 次。为此,语法是

cat sample | grep -E p\{2}

Interval Regular expressions

注意:你需要为这些正则表达式添加 -E 选项。

扩展正则表达式

这些正则表达式包含一个以上的表达式组合。其中一些是:

表达式 描述
\+ 匹配前一个字符一次或多次
\? 匹配前一个字符零次或一次

示例

搜索所有字符“t”

Extended regular expressions

假设我们想过滤掉字符“a”前面是字符“t”的行

我们可以使用类似这样的命令

cat sample|grep "a\+t"

Extended regular expressions

花括号展开

花括号展开的语法是在花括号“{}”内使用序列或逗号分隔的列表。序列的开始和结束项之间用两个句点“..”分隔。

一些例子

Brace expansion

在上面的例子中,echo 命令使用花括号展开来创建字符串。

摘要

  • 正则表达式是用于检查字符串中模式的一组字符。
  • 它们也被称为“regexp”和“regex”。
  • 学习正则表达式对于编写脚本很重要。
  • 一些基本正则表达式是
符号 描述
. 替换任意字符
^ 匹配字符串的开头
$ 匹配字符串的结尾
  • 一些扩展正则表达式是
表达式 描述

\+

匹配前一个字符一次或多次
\? 匹配前一个字符零次或一次
  • 一些区间正则表达式是
表达式 描述
{n} 精确匹配前一个字符出现“n”次
{n,m} 匹配前一个字符出现“n”次,但不能超过 m 次
{n, } 仅当前一个字符出现“n”次或更多次时才匹配
  • 花括号展开用于生成字符串。它有助于从一个字符串创建多个字符串。