Linux正则表达式教程:Grep Regex示例
什么是正则表达式?
正则表达式是特殊字符,可帮助搜索数据,匹配复杂模式。正则表达式缩写为“regexp”或“regex”。
正则表达式的类型
为了便于理解,让我们逐一学习不同类型的正则表达式。
[TOC]
基本正则表达式
一些常用的正则表达式命令是tr,sed,vi和grep。下面列出了一些基本的正则表达式。
符号 | 说明 |
---|---|
。 | 替换任何角色 |
^ | 匹配字符串的开头 |
$ | 匹配字符串的结尾 |
* | 匹配前一个字符的零或更多倍 |
\ | 代表特殊字符 |
() | 分组正则表达式 |
? | 只匹配一个字符 |
我们来看一个例子吧。
执行cat示例以查看现有文件的内容
![](https://img.haomeiwen.com/i5268443/e36e2810cec91152.png)
搜索包含字母'a'的内容。
![](https://img.haomeiwen.com/i5268443/8447ecf611489c22.png)
' ^ '匹配字符串的开头。让我们搜索一下STARTS的内容
![](https://img.haomeiwen.com/i5268443/ee4718ae76822450.png)
仅过滤以字符开头的行。将忽略开头不包含字符“a”的行。
让我们看看另一个例子 -
![](https://img.haomeiwen.com/i5268443/ab890bae1716f9ae.png)
仅选择那些以$结尾的行
![](https://img.haomeiwen.com/i5268443/a30099b37ac67e28.png)
区间正则表达式
这些表达式告诉我们字符串中字符的出现次数。他们是
表达 | 描述 |
---|---|
{N} | 匹配前面的字符完全出现'n'次 |
{N,M} | 匹配前面的字符出现'n'次但不超过m |
{n,} | 仅当前一个字符出现'n'次或更多时才匹配前一个字符 |
例:
过滤掉包含字符'p'的所有行
![](https://img.haomeiwen.com/i5268443/ad49b89fbbd6f7c3.png)
我们想要检查字符'p'是否在字符串中依次出现2次。为此,语法将是:
cat sample| grep -E p\{2}
![](https://img.haomeiwen.com/i5268443/3cadae0eaf0e1293.png)
注意:您需要使用这些正则表达式添加-E。
扩展正则表达式
这些正则表达式包含多个表达式的组合。他们之中有一些是:
表达 | 描述 |
---|---|
\ + | 匹配前一个字符的一个或多个匹配项 |
\? | 匹配前一个字符的零次或一次匹配 |
例:
搜索所有字符't'
![](https://img.haomeiwen.com/i5268443/2c32fc48e6413701.png)
假设我们要过滤字符'a'在字符't'之前的行
我们可以使用命令
cat sample| grep“a\+t”
![](https://img.haomeiwen.com/i5268443/41ff48b1961c6cbd.png)
支撑扩张
大括号扩展的语法是花括号“{}”内的序列或逗号分隔的项目列表。序列中的起始和结束项由两个句点“..”分隔。
一些例子:
![](https://img.haomeiwen.com/i5268443/4b5fe58e3a4a74b0.png)
在上面的示例中,echo命令使用大括号扩展创建字符串。
总结
- 正则表达式是一组用于检查字符串模式的字符
- 它们也被称为“正则表达式”和“正则表达式”
- 学习编写脚本的正则表达式很重要
- 一些基本的正则表达式是:
符号 | 说明 |
---|---|
。 | 替换任何角色 |
^ | 匹配字符串的开头 |
$ | 匹配字符串的结尾 |
- 一些扩展的正则表达式是:
表达 | 描述 |
---|---|
\ + | 匹配前一个字符的一个或多个匹配项 |
\? | 匹配前一个字符的零次或一次匹配 |
- 一些区间正则表达式是:
表达 | 描述 |
---|---|
{N} | 匹配前面的字符完全出现'n'次 |
{N,M} | 匹配前面的字符出现'n'次但不超过m |
{n,} | 仅当前一个字符出现'n'次或更多时才匹配前一个字符 |
- 大括号扩展用于生成字符串。它有助于创建多个字符串。
网友评论