什么是正则表达式
它是由一类特殊字符及文本字符所编写的模式,其中有些字符不表示其字面意义,而是用于表示控制或通配的功能
分两类:
基本正则表达式 BRE
扩展正则表达式 ERE
正则表达式的意义
处理大量的字符串
处理文本
通过特使符号的辅助,可以让linux管理员快速过滤 替换 处理所需要的字符串 文本,让工作高效
通常Linux运维工作,都是面临大量带有字符串的内容,如
-
配置文件
-
程序代码
-
命令输出结果
-
日志文件
且此类字符串内容,我们常会有特定的需要,查找出符合工作需要的特定的字符串,因此正则表达式就出现了
-
正则表达式是一套规则和方法
-
正则工作时以单位进行,一次处理一行
-
正则表达式化繁为简,提高工作效率
-
linux仅受三剑客 (ed、awk、grep)支持,其他命令无法使用
Linux下普通命令无法使用正则表达式的,只能使用三剑客。
通配符是大部分普通命令都支持的,用于查找文件或目录,而正则表达式是通过三剑客命令在文件(数据流)中过滤内容的
Linux三剑客
-
grep:文本过滤工具
-
sed:文本编辑工具
-
awk:文本报告生成器
正则表达式的分类
linux三剑客主要分为两类
基本正则表达式 BRE集合
匹配字符
匹配次数
位置锚定
| 符号 | 作用 |
|---|---|
| ^ | 用于模式的最左侧,如^oldbay,匹配以oldboy单词开头的行 |
| | 用于模式的最右侧,如olday,表示以olday单词结尾的行 | |
| ^$ | 组合符 表示空行 |
| . | 匹配任意一个且只有一个字符,不能匹配空行 |
| \ | 转义字符 让特殊含义的字符,还原本意,例如.代表小数点 |
| * | 匹配前一个字符(连续出现)0次或1次以上,重复0次代表空,及匹配所有内容 |
| .* | 组合符,匹配所有内容 |
| ^.* | 组合符,匹配任意多个字符开头的内容 |
| .*$ | 组合符,匹配以任意多个字符结尾的内容 |
| [abc] | 匹配0集合内的任意一个字符,a或b或c,可以写[a-c] |
| [^abc] | 匹配除了^ 后面的任意字符,a或b或c,^表示对[abc]的取反 |
扩展正则表达式
grep -E 才能使用
| 字符 | 作用 |
|---|---|
| + | 匹配前一个字符1次或多次 |
| [:/]+ | 匹配括号内的:或/字符一次或多次 |
| ? | 匹配前一个字符0次或一次 |
| | | 表示或者 同时过滤多个字符 |
| () | 分组过滤,被括起来的内容表示一个整体 |
| a{n,m} | 匹配前一个字符最少匹配n次,最多m次 |
| a{n,} | 匹配前一个字符最少匹配n次 |
| a{n} | 匹配前一个字符正好n次 |
| a{,m} | 匹配前一个字符最多m次 |

9629

被折叠的 条评论
为什么被折叠?



