第11章
1、正则表达式介绍
1、什么是正则表达式:为处理大量字符串及文本而定义的一套规则和方法。
例:@=I am, !=oldboy,则echo " @!"就是输出''I am oldboy"
三剑客的正则表达式特点:
1、为处理大量字符串及文本而定义的一套规则和方法
2、其工作时以行为单位进行,即一次处理一行
3、通过正则表达可以将复杂的处理任务华繁为简
4、仅被三剑客(grep/egrep sed awk)命令支持,其他命令无法使用
2、为什么要学正则表达式
工作中会碰到大量字符串,为了效率
3、有关正则表达式容易混淆的事项
它和通配符有本质区别,一个数据流,一个字符串
4、学正则表达的注意事项
1、linux 正则表达是按照行为单位进行处理的
2、正则表达式公适合三剑客命令
3、注意LC_ALL环境变量的设置
2、正则表达式的分类
1、基本正则表达式集合
尖角号^ 用法为^oldboy 表示匹配以oldboy单词开关的行
美元符 用法为oldboy$ 表示匹配以oldboy单词结尾的行
组合符^$ 用法为^$oldboy 表示空行 以^开头的行,以$结尾的行
点号. 表示匹配任意一个有且只有一个字符(但不能匹配空行)
转义符\ 让特殊含义字符脱马甲显原形 如 \. 点只表示小数点
星号 * 匹配前一个字符(连续出现)0次或1次以上
.* 组合符 匹配所有内容
^.*组合符 匹配以任意多个字符开头的内容
.*$组合符 以任意多个字符结尾的内容
[abc]或[a-z] 匹配[]集合内的任意一个字符a或b或c
[^abc] 匹配不包含^后的任意字符a或b或c,^表示对[abc]取反
2、扩展正则表达式集合
+ 匹配前一个字符1次或1次以上
[:/]+ 匹配括号内的:或/字符1次或1次以上
? 匹配前一个字符0次或1次
| 表示或者,即同时过滤多个字符串
() 分组过滤被包括起来的东西表示一个整体,另()的内容 可以被后面的\n引用,n为数字,表示引用第几个()的内容
/n 引用前面()里面的内容;如(aa)\1,匹配aaaa
a{n,m} 匹配前面一个字符最少n次,最多m次
a{n,} 匹配前面一个字符最少n次
a{n} 匹配前面一个字符正好n次
a{,m} 匹配前面一个字符最多m次
支持扩展正则的3种方法:
grep命令加-E参数即可支持扩展正则
grep命令不加参数也可以使用扩展正则表达式的特殊字符,但有个条件,就是需要在使用的每个特殊字符前面加反斜\
egrep命令直接支持扩展正则