Linux学习之路

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

2019-07-30  本文已影响0人  程序员will

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

什么是正则表达式?

正则表达式是特殊字符,可帮助搜索数据,匹配复杂模式。正则表达式缩写为“regexp”或“regex”。

正则表达式的类型

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

[TOC]

基本正则表达式

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

符号 说明
替换任何角色
^ 匹配字符串的开头
$ 匹配字符串的结尾
* 匹配前一个字符的零或更多倍
\ 代表特殊字符
() 分组正则表达式
只匹配一个字符

我们来看一个例子吧。

执行cat示例以查看现有文件的内容

Linux - 正则表达式

搜索包含字母'a'的内容。

Linux - 正则表达式

' ^ '匹配字符串的开头。让我们搜索一下STARTS的内容

Linux - 正则表达式

仅过滤以字符开头的行。将忽略开头不包含字符“a”的行。

让我们看看另一个例子 -

Linux - 正则表达式

仅选择那些以$结尾的行

Linux - 正则表达式

区间正则表达式

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

表达 描述
{N} 匹配前面的字符完全出现'n'次
{N,M} 匹配前面的字符出现'n'次但不超过m
{n,} 仅当前一个字符出现'n'次或更多时才匹配前一个字符

例:

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

Linux - 正则表达式

我们想要检查字符'p'是否在字符串中依次出现2次。为此,语法将是:

cat sample| grep -E p\{2}

Linux - 正则表达式

注意:您需要使用这些正则表达式添加-E。

扩展正则表达式

这些正则表达式包含多个表达式的组合。他们之中有一些是:

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

例:

搜索所有字符't'

Linux - 正则表达式

假设我们要过滤字符'a'在字符't'之前的行

我们可以使用命令

cat sample| grep“a\+t”

Linux - 正则表达式

支撑扩张

大括号扩展的语法是花括号“{}”内的序列或逗号分隔的项目列表。序列中的起始和结束项由两个句点“..”分隔。

一些例子:

Linux - 正则表达式

在上面的示例中,echo命令使用大括号扩展创建字符串。

总结

符号 说明
替换任何角色
^ 匹配字符串的开头
$ 匹配字符串的结尾
表达 描述
\ + 匹配前一个字符的一个或多个匹配项
\? 匹配前一个字符的零次或一次匹配
表达 描述
{N} 匹配前面的字符完全出现'n'次
{N,M} 匹配前面的字符出现'n'次但不超过m
{n,} 仅当前一个字符出现'n'次或更多时才匹配前一个字符
上一篇下一篇

猜你喜欢

热点阅读