正则表达式
bash
- bash是一个命令处理,运行在文本窗口中,并能执行用户直接输入命令
- bash还能从文件中读取linux命令.称之为脚本
- bash只能通配符、管道、命令替换、条件判断等逻辑控制语句
linux正则表达式
分两类
1 基本正则表达式:BRE
2 扩展正则表达式:ERE
正则表达式的意思
- 处理大量的字符串
- 处理文本
通过特殊符号的辅助,可以让linux管理员快速过滤、替换、处理所需要的字符串、文本、让工作高效
通常linux运维工作,都是面临大量带有字符串的内容如
- 配置文件
- 程序代码
- 命令输出结果
- 日志内容
且此类字符串内容,我们常会有特定的需要,查找出符合工作需要的特定的字符串,因此正则表达式就出现了
- 正则表达式是一套规则和方法
- 正则工作时以单位运行,一次处理一行
- 正则表达式化繁为简,提高工作效率
- linux仅爱三剑客(sed、awk、grep)
正则表达式应用非常广泛,应用在如python、java、pertl、linux下普通命令无法使用正则表达式的,只能使用三剑客
通配符是大部分普通命令支持的,用于查找文件或目录,而正则表达式是通过三剑客命令在文件(数据流)中过滤内容的
linux三剑客
文本处理工具,均支持正则表达式引擎
- grep:文件过滤工具。(模式:pattern)
- sed:stream editor,流编辑器;文本编辑器
- awk:linux的文件报告生成器(格式化文本),linux上是gawk
正则表达式分类
linux三剑客主要分两类
-
基本正则表达式(BRE、basic regular expression)
BRE对应元字符有 ^$[]*
-
扩展正则表达式
ERE在BRE基础上,增加(){}?+|等字符
基本正则表达式BRE集合
- 匹配字符
- 匹配次数
- 位置锚定
符号 | 作用 |
---|---|
^ | 尖角号,用于模式的最左侧,如"^lodbay",匹配以oldboy单词开头的行 |
$ | 美元符,用于模式的最右侧,如"lodboy$",表示已lodboy单词结尾的行 |
^$ | 组合符,表示空行 |
. | 匹配任意一个且只有一个字符,不能匹配空行 |
\ | 转义字符,让特殊含义的字符,现出原形,还原本意,例如 \ .代表小数点 |
* | 匹配前一个字符(连续出现)0次或1次以上,重复0代表空,即匹配所有内容 |
.* | 组合符,匹配所有内容 |
^* | 组合符,匹配任意多个字符开头的内容 |
.*$ | 组合符,匹配以任意多个字符结尾的内容 |
[abc] | 匹配[]集合内的任意一个字符,a或b或c,可以写[a-c] |
[^abc] | 匹配除了后面的任意字符,a或b或c,表示对[abc]取反 |