[转帖]egrep 正则表达式
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 正则表达式的更多相关文章
- grep和egrep正则表达式
Linux上文本处理三剑客 grep :文本过滤( 模式:pattern) 工具 grep, egrep, fgrep (不支持正则表达式搜索,但搜索纯文本的数据最快) sed :stream edi ...
- 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 ...
- Linux正则表达式grep与egrep
grep -io "http:/=[A-Z0-9]\{16\}" ./wsxf.txt >wsxf_urls.txt Linux正则表达式grep与egrep 正则表达式:它 ...
- Linux三剑客之grep 与 egrep
grep: Linux上文本处理三剑客 grep:文本过滤(模式:pattern)工具; *(grep, egrep, fgrep) sed:stream editor,文本编辑工具: awk:Lin ...
- 正则表达式(BREs,EREs,PREs)差异比较
我想各位也和我一样,再linux下使用grep,egrep, awk , sed, vi的搜索时,会经常搞不太清楚,哪此特殊字符得使用转义字符'\' .. 哪些不需要, grep与egrep的差异 ...
- 【转】linux shell 正则表达式(BREs,EREs,PREs)差异比较
我想各位也和我一样,再linux下使用grep,egrep, awk , sed, vi的搜索时,会经常搞不太清楚,哪此特殊字符得使用转义字符'\' .. 哪些不需要, grep与egrep的差异 ...
- linux shell 正则表达式(BREs,EREs,PREs)差异比较
linux shell 正则表达式(BREs,EREs,PREs)差异比较 则表达式:在计算机科学中,是指一个用来描述或者匹配一系列符合某个句法规则的字符 串的单个字符串.在很多文本编辑器或其他工具里 ...
- 正则表达式匹配可以更快更简单 (but is slow in Java, Perl, PHP, Python, Ruby, ...)
source: https://swtch.com/~rsc/regexp/regexp1.html translated by trav, travmymail@gmail.com 引言 下图是两种 ...
- linux shell 正则表达式(BREs,EREs,PREs)差异比较(转)
add by zhj: Python的正则表达式跟Perl很像,Python的re模块文档中也说"This module provides regular expression matchi ...
- linux shell 正则表达式(BREs,EREs,PREs)的比较
原文 : linux shell 正则表达式(BREs,EREs,PREs)差异比较 在使用 linux shell的实用程序,如awk,grep,sed等,正则表达式必不可少,他们的区别是什么 ...
随机推荐
- antd ui的from使用问题
select 的allowClear失效问题 select的value与allowClear同时使用会导致allowClear失效 解决方法 from包装一层,通过const [form] = For ...
- C++篇:第十三章_异常_知识点大全
C++篇为本人学C++时所做笔记(特别是疑难杂点),全是硬货,虽然看着枯燥但会让你收益颇丰,可用作学习C++的一大利器 十三.异常 ① 函数指针与该指针所指的函数必须具有一致的noexcept异常说明 ...
- 新晋“网红”Cat1 是什么
摘要:此Cat非彼Cat,它是今年物联网通信圈新晋网红"靓仔". 引言 今年5月,工信部发布了<关于深入推进移动物联网全面发展的通知>,明确提出推动存量2G.3G物联网 ...
- iOS打包IPA教程
转载:xcode打包导出ipa 众所周知,在开发苹果应用时需要使用签名(证书)才能进行打包安装苹果 IPA,作为刚接触ios开发的同学,只是学习ios app开发内测,并没有上架appstore需 ...
- 火山引擎DataLeap的Data Catalog系统公有云实践 (上)
更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 前言 Data Catalog 通过汇总技术和业务元数据,解决大数据生产者组织梳理数据.数据消费者找数和理解数的业 ...
- Mac Snipaste 不仅仅是截图工具,不在菜单栏显示,怎么样修改快捷键
官网下载: https://www.snipaste.com Snipaste 免费,支持 Windows.Mac,Windows 上的功能相当多而且,Mac 也够用了 不仅仅是个截图工具,具有强大功 ...
- FileLock 多进程文件锁
FileLock是文件锁,它能保证同一时间只有一个进程(程序)能够修改它,或者都只可以读,这样就解决了多进程间的同步文件,保证了安全性.但是需要注意的是,它进程级别的,不是线程级别的,他可以解决多个进 ...
- Python异步编程之yield from
yield from 简介 yield from 是Python3.3 后新加的语言结构,可用于简化yield表达式的使用. yield from 简单示例: >>> def gen ...
- 【每日一题】33. 简单瞎搞题 (滚动数组 + bitset 优化DP)
补题链接:Here 这个问题的难点在于如何统计出所有和可能出现的情况,并且不能重复. 很容易想到用桶去存储每一个数,即某个和能够组合出来则为1,否则为0 不妨令 \(dp[i][j]\) 表示为第 \ ...
- [TSG@Site开发日志3]从C#到Qt,再从Qt到C# 和 Qt的组合开发,浅谈在采集端工控设备开发中不同技术之间选型的利与弊
[TSG开发日志3]从C#到Qt,再从Qt到C#,浅谈不同技术之间选型的利与弊 当前在South公司的开发历经了几个时代,第一个时代是用C#进行的开发,第二个时代是从C#向Qt逐渐转型,第三个时代是我 ...