正则表达式三剑客之——grep和egrep

正则表达式

正则表达式,又称规则表达式。(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。

正则表达式是对字符串(包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为“元字符”))操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。正则表达式是一种文本模式,该模式描述在搜索文本时要匹配的一个或多个字符串。

元字符

正则表达式由一些普通字符和一些元字符(metacharacters)组成。普通字符包括大小写的字母和数字,而元字符则具有特殊的含义,以下给出解释:

元字符 含义
. 匹配任意单个字符
* 匹配前一个字符出现0次或连续多次
.* 匹配任意长度
^ 匹配以……开头
$ 匹配以……结尾
^$ 匹配空行
[ ] 匹配指定范围内的单个或多个字符
[^ ] 匹配不包含括号里任意单个或一组字符
^[ ] 匹配以括号内的单个或多个字符开头
^[^ ] 匹配不以括号内的单个或多个字符开头
\< 匹配以……开头的行
\> 匹配以……结尾的行
\<……\> 匹配某一个单词的行
\{n\} 匹配前一个字符出现n次
\{n,\} 匹配前一个字符至少出现n次
\{n,m\} 匹配前一个字符至少出现n次,至多出现m次
^$ 空行

grep

grep (缩写来自Globally search a Regular Expression and Print)是一种强大的文本搜索工具,它能使用特定模式匹配(包括正则表达式)搜索文本,并默认输出匹配行。Unix的grep家族包括grep、egrep和fgrep
linux使用GNU版本的grep。它功能更强,它也可以通过-E命令行选项来使用egrep功能

grep的常用参数

参数 说明
-i 不区分大小写
-v 过滤
-n 显示行号
-w 精确匹配单词
-E 可用扩展元字符
-o 把匹配到的字符按行打印出来

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

注意:‘a.’不代表只有2个字符,如果一行存在多个’a.'这样的形式它会一起匹配出来!
在这里插入图片描述

在这里插入图片描述
注意:1、a不一定是字符串的开头或者行的开头
2、第一个字符a是固定的,肯定会出现的,而第二个a可能没有或有多个,所以它把有a的行都匹配了

在这里插入图片描述
在这里插入图片描述
注意:字符a肯定会出现,后面跟1个到多个字符

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
注意:如果一行abc全有它直接过滤掉不会出现,如果只是有abc其中的一个字符它会显示但不会匹配,相当于过滤的意思了,把中括号里^字符后面的看成一个整体过滤掉显示出来
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
注意:^在中括号里表示不匹配,在中括号外表示以……开头

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
注意:<……>这个里面是精确匹配一个单词!而<和>不是,只是匹配开头结尾,等同于^和$的用法
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
注意:这里匹配的是a+几个a的倍数的行,而不是几次就是几次
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

扩展元字符

元字符 含义
+ 匹配前一个字符1个或多个
匹配0个或1个字符
|
() 匹配括号里的整体
{n} 前一个字符重复n次
{n,} 前一个字符至少重复n次
{n,m} 前一个字符出现n-m次

egrep

egrep命令只跟grep有很小不同。egrep是grep的扩展,支持更多的元字符
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
注意:竖线两边不能有空格

猜你喜欢

转载自blog.csdn.net/shengjie87/article/details/107627810