https://www.cnblogs.com/ordili/p/9395735.html

一.功能

用正则表达式在文件或输入中搜索匹配的字符串,并打印出匹配的行。egrep匹配之前,会删除每行结尾的换行符。

二.语法

grep [OPTION]... PATTERN [FILE]...

OPTION 是选项,如  -i  匹配时忽略大小写

PATTERN 是正则表达式,需要用单引号扩起来

FILE 是文件,可以同时搜索多个文件

三.元字符

3.1 行首与行尾

^ 匹配行首

$ 匹配行尾

3.2 字符组[]

[]字符组,用于匹配字符组内任意字符,在字符组内部与外部,关于元字符的规定是不同的。

3.2.1 字符组内元字符

l 连字符“-”,在子字符组内连字符表示范围

l 脱字符“^”,在子字符组内脱字符表示否定

3.2.2 字符组注意事项

l 连字符“-”,位于字符组内第一个字符时,只是普通字符,不具备特殊意义

l 在字符组内字符 ? .  \ 都是普通字符

3.2.3 字符组例子

[.\?] 匹配.或?或\,这里的元字符.?当做普通字符处理,这里的\没有转译的功能。

[-12] 匹配-或1或2,这里的连字符当做普通字符处理

[abc] 匹配a或b或c

[0-9] 匹配任意一个数字

[a-z] 配置任意一个小写字母

[0-9a-zA-Z] 匹配任意数字或字母

[^1-5] 匹配1-5之外的任意字符

3.3 多选结构 |

| 表示”或”的意思,用于表示任意子表达式。多选结构用括号来界定范围

3.3.1 多选结构例子

grey|gray  或gr(a|e)y 或 gr[ae]y 都匹配 gray 或 grey

3.3.2 多选结构注意事项

l 多选结构用括号来界定范围

l 多选结构的每个子表达式自身都可能是完整的正则表达式,都可以匹配任意长度的文本

3.3.3 多选结构与字符组的区别:

字符组可以算是一门独立的微型语言,它对元字符有其自身的规定

多选结构则是正则表达式语言主体的一部分。

3.4 单词分界符

\< 用于匹配单词的首

\> 用于匹配单词的尾

如:

\<Cat\> 匹配单词Cat 不匹配包含Cat的其它单词,如Cata 、cCat

元字符序列:

3.5 可选项元素及量词 ?

元字符?用于表示可选项,表示有或者没有;元字符?一定要放在某个字符的后面,用于表示该字符有或没有,并且用括号来界定元字符?的作用对象

如:

July? 匹配Jul 或 July ;都表示七月

A(July)? 匹配A  或 July; 这里用括号来界定了元字符?的作用对象。

July? (fourth|4(th)?) 匹配 July fourth 或 July 4 或 July 4th 或 Jul fourth 或 Jul 4 或 Jul 4th

量词

名称

含义

问号

匹配前面的字符0-1次

+

加号

匹配前面的字符1-N次,尽可能多匹配

*

星号

匹配前面的字符0-N次,尽可能多匹配

{min,max}

匹配min到max次,

3.6 括号及反向引用

括号的作用:

3.7.1. 界定|的范围

3.7.2. 的把若干字符组合成一个单元,受量词的作用;如 ?+*{m,n}

3.7.3. 反向引用,

括号能够“记忆”其中子表达式匹配到的文本,可用\num来获取这些匹配到的文本;num代表数字,从1开始,num的编号按照开括号出现的先后排序

如果某个括号只是分组而不捕获,可以使用语法 (?:

如;

([a-z])([0-9])\1\2 \1代表[a-z]匹配的内容 \2代表[0-9]匹配的内容

egrep -i ‘\<([a-z]+) +\1\>’  file 匹配file中任意重复2次的单词

3.7 简单记法:

\t 制表符

\n 换行符

\r 回车符

\s 任何“空白”字符(空格符,制表符,进纸符)

\S 除\s之外的符合

\w [a-zA-Z0-9]

\W [^a-zA-Z0-9]

\d [0-9]

\D [^0-9]

3.8 总结

元字符

名称

匹配对象

.

匹配单个任意字符

[]

字符组

匹配任意列出的字符

[^]

排除型字符组

匹配任意没有列出的字符

^

脱字符

匹配行首

$

美元符

匹配行尾

\<

反斜线-小于

匹配词首

\>

反斜线-大于

匹配词尾

|

竖线

匹配分隔两旁的任意一个表达式

()

括号

界定|的作用范围

[转帖]egrep 正则表达式的更多相关文章

  1. grep和egrep正则表达式

    Linux上文本处理三剑客 grep :文本过滤( 模式:pattern) 工具 grep, egrep, fgrep (不支持正则表达式搜索,但搜索纯文本的数据最快) sed :stream edi ...

  2. awk 简单使用 egrep 正则表达式

    [root@python ~]# cat testcount.txt a 1.1.1.1b 2.2.2.2c 3.3.3.3a 1.1.1.1d 4.4.4.4e 5.5.5.5f 6.6.6.6 1 ...

  3. Linux正则表达式grep与egrep

    grep -io "http:/=[A-Z0-9]\{16\}" ./wsxf.txt >wsxf_urls.txt Linux正则表达式grep与egrep 正则表达式:它 ...

  4. Linux三剑客之grep 与 egrep

    grep: Linux上文本处理三剑客 grep:文本过滤(模式:pattern)工具; *(grep, egrep, fgrep) sed:stream editor,文本编辑工具: awk:Lin ...

  5. 正则表达式(BREs,EREs,PREs)差异比较

    我想各位也和我一样,再linux下使用grep,egrep, awk , sed, vi的搜索时,会经常搞不太清楚,哪此特殊字符得使用转义字符'\' ..   哪些不需要, grep与egrep的差异 ...

  6. 【转】linux shell 正则表达式(BREs,EREs,PREs)差异比较

    我想各位也和我一样,再linux下使用grep,egrep, awk , sed, vi的搜索时,会经常搞不太清楚,哪此特殊字符得使用转义字符'\' ..   哪些不需要, grep与egrep的差异 ...

  7. linux shell 正则表达式(BREs,EREs,PREs)差异比较

    linux shell 正则表达式(BREs,EREs,PREs)差异比较 则表达式:在计算机科学中,是指一个用来描述或者匹配一系列符合某个句法规则的字符 串的单个字符串.在很多文本编辑器或其他工具里 ...

  8. 正则表达式匹配可以更快更简单 (but is slow in Java, Perl, PHP, Python, Ruby, ...)

    source: https://swtch.com/~rsc/regexp/regexp1.html translated by trav, travmymail@gmail.com 引言 下图是两种 ...

  9. linux shell 正则表达式(BREs,EREs,PREs)差异比较(转)

    add by zhj: Python的正则表达式跟Perl很像,Python的re模块文档中也说"This module provides regular expression matchi ...

  10. linux shell 正则表达式(BREs,EREs,PREs)的比较

    原文 :   linux shell 正则表达式(BREs,EREs,PREs)差异比较 在使用 linux shell的实用程序,如awk,grep,sed等,正则表达式必不可少,他们的区别是什么 ...

随机推荐

  1. SAM适配下游任务的探究:SAM Adapter

    本文分享自华为云社区<SAM适配下游任务的探究:SAM Adapter>,作者:Hint. 近期大模型的涌现给AI研究带来显著的发展,META的工作Segment Anything(SAM ...

  2. 百万奖池角逐,华为云IoT边缘带你看懂“边缘计算开发者大赛”

    摘要:2022年9月1日,第二届边缘计算开发者大赛正式启动. 2022年9月1日,第二届边缘计算开发者大赛正式启动! 本届大赛由华为云参与承办,中国信息通信研究院.工业互联网产业联盟.边缘计算产业联盟 ...

  3. 详解SQL优化必备:并行执行框架和执行计划

    摘要:在关系型数据库中,优化器是数据库的核心组件之一,由于一些列因素都会影响语句的执行,优化器综合权衡各个因素,在众多的执行计划中选择认为是最佳的执行计划. 本文分享自华为云社区<华为云Gaus ...

  4. 云小课 | SA基线检查—给云服务的一次全面“体检”

    阅识风云是华为云信息大咖,擅长将复杂信息多元化呈现,其出品的一张图(云图说).深入浅出的博文(云小课)或短视频(云视厅)总有一款能让您快速上手华为云.更多精彩内容请单击此处. 摘要: 华为云态势感知( ...

  5. java并发编程(1):Java多线程-基本线程类-基础知识复习笔记

    复习资料:<同步与异步:并发/并行/进程/线程/多cpu/多核/超线程/管程 > 基本线程类 基本线程类 基本线程类指的是Thread类,Runnable接口,Callable接口 继承T ...

  6. vue2升级vue3:vue3真的需要vuex或者Pinia吗?hooks全有了

    在写 <vue2升级vue3:TypeScript下vuex-module-decorators/vuex-class to vuex4.x>,建议新项目使用 Pinia,但是我的项目部分 ...

  7. 如何利用 A/B 实验提升产品用户留存? 看字节实战案例给你答案!

    技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 产品增长中最为经典的模型为 AARRR 漏斗模型,该模型追求最大化拉新,第一步"获客"(Acqui ...

  8. C# 使用SqlDataAdapter和DataSet来访问数据库

    使用SqlDataAdapter和DataSet来访问数据库 报:已有打开的与此 Command 相关联的 DataReader,必须首先将它关闭 解决方法,使用 using 包住 connectio ...

  9. ABAP 内表与JSON转换

    一.内表转JSON "-----------------------------@斌将军----------------------------- TYPES: BEGIN OF ty_na ...

  10. 【JAVA基础】常量变量维护

    常量维护 //参与签名的系统Header前缀,只有指定前缀的Header才会参与到签名中 //换行符 private static final char LF = '\n'; public stati ...