一、Shell 正则表达式
基础正则表达式:BRE
扩展正则表达式:ERE,扩展的表达式有+,?,|,(),grep选项-E
. 匹配除换行符之外的任意单个字符
注意是单个字符,比如匹配1234,就应当是1…4,中间是两个点
^ 匹配以字符串开头的行
可以看到,以abc开头的行都被匹配到,输出那一行
$ 匹配以字符串结尾的行
可以看到,以fg结尾的行都被匹配到,输出那一行
* 匹配前面的子表达式(零个或多个)
可以看到,*号之前的一个字符可以是0个或者多个
如果是0个y,就输出x;如果是1个y,就输出xy;如果是2个y,就输出xyy
+ 匹配前面的子表达式(一个或多个)
[] 匹配中括号中的任意一个字符
[.-.] 匹配中括号中范围内的任意一个字符
[^] 匹配[^字符]之外的任意一个字符
{n} 匹配确定的n次
{n,} 至少匹配n次,注意‘ ’
< 边界符,匹配字符串开始
> 边界符,匹配字符串结尾
() 作为单元,将小括号里面的作为一组
() 作为分组,匹配小括号中的正则表达式或字符
\n 反向引用,n是数字,从1开始编号,表示引用第n个分组匹配的内容
| 匹配两边的任意一个
\ 转义符,将特殊符号转成原有意义
二、文本处理简介
命令 | 描述 |
---|---|
grep | 默认不支持扩展表达式,加-E选项开启 ERE。如果不加-E使用花括号要加转义符\{\} |
egrep | 支持基础和扩展表达式 |
awk | 支持egrep所有的正则表达式 |
sed | 默认不支持扩展表达式,加-r 选项开启 ERE。 如果不加-r 使用花括号要加转义符\{\} |
支持的特殊字符 | 描述 |
---|---|
\w | 匹配任意数字和字母,等效于[a-zA-Z0-9] |
\W | 与\w 相反,等效于[^a-zA-Z0-9] |
\b | 匹配字符串开始或结束,等效于\<和\> |
\s | 匹配任意的空白字符 |
\S | 匹配任意的非空白字符 |
空白符 | 描述 |
---|---|
\n | 换行符 |
\r | 回车符 |
\t | 水平制表符 |
\v | 垂直制表符 |
\0 | 空值符 |
\b | 退后一格 |