Linux正则表达式
Linux_commands #正则表达式
/toc
Regex正则表达式在线测试、生成、解析工具 - GoRegex.cn
正则表达式:Regual Expression;
由一类特殊字符及文本字符所编写的模式,其中有些字符不表示其字面意思,而是用于不是控制或通配的功能。
主要分为两类:
- 基本正则表达式:BRE
- 扩展正则表达式:ERE
正则表达式的意义
- 处理大量的字符串
- 处理文本
通过特殊符号的辅助,可以让工作更加高效。
通常Linux运维工作都是面临大量带有字符串的内容:
- 配置文件
- 程序代码
- 命令结果输出
- 日志文件
正则表达式可以根据特定的需要完成特定的表达式
- 是一套规则和方法
- 以单温进行,一次处理一行
- 化繁为简,提高工作效率
- Linux仅支持三剑客(sed、awk、grep)支持,其他命令无法使用正则表达式,只能使用三剑客
Linux三剑客
文本处理工具,均支持正则表达式引擎
- grep:文本过滤工具,(模式:pattern)工具
- sed:stream edior,流编辑器;文本编辑工具
- awk:Linux的文本报告生成器(格式化文本),Linux上是gawk
正则表达式的分类
Linuix三剑客主要分两类
基本正则表达式BRE集合
- 基本正则表达式
BRE对应元字符有:^$.[]*
- 匹配字符
- 匹配次数
- 位置锚定
符号 | 作用 |
---|---|
^ | 尖角号,用于模式的最左侧,如"^nobady",匹配以nobady单词开头的行 |
$ | 美元号,用于模式的最又侧,如"nobady$",匹配以nobady单词结尾的行 |
^$ | 组合符,表示空行 |
. | 匹配任意一个且只有一个字符,不能匹配空行 |
\ | 转义字符,让特殊含义的字符,还原本意 |
* | 匹配前一个字符(连续出现)0次或1次以上,重复0次代表空,即匹配所有内容 |
.* | 组合符,匹配所有内容 |
^.* | 组合符,匹配任意多个字符开头的内容 |
.*$ | 组合符,匹配以任意多个字符结尾的内容 |
[abc] | 匹配[]集合内的任意一个字符,a或b或c,可以写[a-c] |
[^abc] | 匹配除了后面的任意字符,a或b或c,表示对[abc]的取反 |
扩展正则表达式ERE集合
- 扩展正则表达式
ERE在BRE基础上,增加了 (){}?+| 等字符
扩展正则必须使用 grep -E 才能生效
字符 | 作用 |
---|---|
+ | 匹配前一个字符1次或者多次 |
[😕]+ | 匹配括号内的“:”或“/”字符1次或者多次 |
? | 匹配前一个字符0次或者1次 |
\ | 表示或者,同时过滤多个字符串 |
() | 分组过滤,被括起来的内容表示一个整体 |
a | 匹配前一个字符最少n次,最多m次 |
Tips: | |
// 双斜杠表示开头和结尾,中间表示需要匹配的字符 |
![[../../../A-Accessories-Note附件/Pasted image 20231122234229.png]]
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)