grep工具以及正则表达式

一、grep简介

1、基本概念

grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。

(1)Unix的grep家族包括grep、egrep和fgrep;egrep和fgrep的命令只跟grep有很小不同。
(2)egrep是grep的扩展,支持更多的re元字符, fgrep就是fixed grep或fast grep,它们把所有的字母都看作单词,也就是说,正则表达式中的元字符表示回其自身的字面意义,不再特殊。
(3)linux使用GNU版本的grep。它功能更强,可以通过-G、-E、-F命令行选项来使用egrep和fgrep的功能。

2、两种规范

  • Basic规范
    将字符?+ { } | ( )解释为字面意思。要表示特殊的意思需要加转义字符\
  • Extended规范
    将字符?+ { } | ( )解释为特殊的意思。要表示字面意思需要加转义字符\
    注意:标准正则用的是Basic规范,扩展正则用的是Extended规范

二、常见的grep用法

1、grep主要有以下几种常见的用法:

选项 说明
-E 表示采用Extended正则表达式语法
–color 加匹配到的行,加颜色显示
-q 取消显示,只返回退出状态。0表示找到了
-R 递归读取目录下所有文件,包括子目录
-c 只输出匹配行的计数
-i 不区分大小写(只适用于单字符)
-h 查询多文件时不显示文件名
-l 查询多文件时只输出包含匹配字符的文件名
-n 显示匹配行及行号
-s 不显示不存在或无匹配文本的错误信息
-v 显示不包含匹配文本的所有行

2、用例展示

常用命令查找:
这里写图片描述
其他表示显示结果:
这里写图片描述

三、正则表达式

1、基本概念

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

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

2、正则表达式的应用场景

  • 验证: 表单提交时,进行用户名密码验证。
  • 查找: 从大量信息中快速提取指定内容。
  • 在一批url中,查找指定url 替换: 将指定格式的文本,进行正则匹配查找,找到之后进行特定替换,(vim文本替换等)
  • 在很多技术领域(比如,自然语言处理,数据存储等),正则表达式可以很方便的提取出我们想要的信息,所以这 部分必不可少。

3、正则表达式的基本要素

  • 字符类
  • 数量限定符
  • 位置限定符
  • 特殊符号

我们需要了解的是:正则表达式基本是与语言无关的,只要学会正则表达式,那么基本上可以结合语言/工具与正则进行文本处 理。

四、正则表达式与grep

1、字符类

字符类:在一个模式中表示一个字符,但是取值范围为任意一个字符。
这里写图片描述
实例显示:
这里写图片描述

2、数量限定符

数量限定符:规定每个字符出现的次数。
这里写图片描述
实例显示:
这里写图片描述

3、位置限定符

位置限定符:描述各种字符类以及普通字符出现的位置。
这里写图片描述
实例显示:
这里写图片描述

4、特殊符号

这里写图片描述
实例显示:
这里写图片描述
扩展匹配与基准匹配的总结:
区别: 正则表达式的Extended规范和Basic规范基本相同。只是在Basic规范下,有些字符 ?+{}|() 应解释为普通 字符,要表示上述特殊含义则需要加 \ 转义。
反之,在Extended规范下, ?+{}|() 应该被理解成特殊含义,要取其字面值,也要对其进行 \ 转义。
所以, grep 工具带上 -E 选项,表示使用扩展正则来进行匹配,若没有,则表示使用基准正则进行匹配

猜你喜欢

转载自blog.csdn.net/qq_37964547/article/details/80916074