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

正则表达式

    • 正则表达式
      • 元字符
      • 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 把匹配到的字符按行打印出来

正则表达式三剑客之——grep和egrep_第1张图片
正则表达式三剑客之——grep和egrep_第2张图片
正则表达式三剑客之——grep和egrep_第3张图片

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

正则表达式三剑客之——grep和egrep_第4张图片
注意:1、a不一定是字符串的开头或者行的开头
2、第一个字符a是固定的,肯定会出现的,而第二个a可能没有或有多个,所以它把有a的行都匹配了

正则表达式三剑客之——grep和egrep_第5张图片
正则表达式三剑客之——grep和egrep_第6张图片
注意:字符a肯定会出现,后面跟1个到多个字符

正则表达式三剑客之——grep和egrep_第7张图片
在这里插入图片描述

正则表达式三剑客之——grep和egrep_第8张图片
正则表达式三剑客之——grep和egrep_第9张图片
注意:如果一行abc全有它直接过滤掉不会出现,如果只是有abc其中的一个字符它会显示但不会匹配,相当于过滤的意思了,把中括号里^字符后面的看成一个整体过滤掉显示出来
正则表达式三剑客之——grep和egrep_第10张图片

正则表达式三剑客之——grep和egrep_第11张图片

正则表达式三剑客之——grep和egrep_第12张图片

正则表达式三剑客之——grep和egrep_第13张图片
注意:^在中括号里表示不匹配,在中括号外表示以……开头

正则表达式三剑客之——grep和egrep_第14张图片

在这里插入图片描述
在这里插入图片描述
注意:<……>这个里面是精确匹配一个单词!而<和>不是,只是匹配开头结尾,等同于^和$的用法
正则表达式三剑客之——grep和egrep_第15张图片
在这里插入图片描述

正则表达式三剑客之——grep和egrep_第16张图片
注意:这里匹配的是a+几个a的倍数的行,而不是几次就是几次
正则表达式三剑客之——grep和egrep_第17张图片

正则表达式三剑客之——grep和egrep_第18张图片
正则表达式三剑客之——grep和egrep_第19张图片
正则表达式三剑客之——grep和egrep_第20张图片
在这里插入图片描述

扩展元字符

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

egrep

egrep命令只跟grep有很小不同。egrep是grep的扩展,支持更多的元字符
正则表达式三剑客之——grep和egrep_第21张图片
正则表达式三剑客之——grep和egrep_第22张图片
正则表达式三剑客之——grep和egrep_第23张图片
在这里插入图片描述
正则表达式三剑客之——grep和egrep_第24张图片
正则表达式三剑客之——grep和egrep_第25张图片
正则表达式三剑客之——grep和egrep_第26张图片
注意:竖线两边不能有空格

你可能感兴趣的:(Linux,正则表达式,grep)