正则表达式
概念:
- 用特殊字符去匹配字符串中的内容
grep三大成员
grep
- 支持使用基本正则表达式
egrep
- 支持使用扩展正则表达式
- 等价于grep -e
fgrep
- 不支持使用正则表达式
- 等价于grep -f
基本正则表达式
字符 | 含义 |
---|---|
^ | 以……开头的行 |
$ | 以……结尾的行 |
^$ | 匹配空行 |
[] | 匹配字符集合内的任意一个字符 [a-z] [A-Z] [0-9] [a-zA-Z] |
[^] | 匹配除集合内的任意字符[^a-z] [^A-Z] [^0-9] |
. | 对任何单个字符进行匹配 |
* | 对前一项进行0次或多次重复匹配 |
{n,m} | 匹配 n 到 m 次前一个字符 基本正则需要对 \{\} 进行转义 |
{n,} | 匹配至少 n 次前一个字符 |
{,m} | 匹配最多 m 次前一个字符 |
{n} | 匹配 n 次前一个字符 |
\< | 匹配以单词作为开头的行 |
\> | 匹配以单词作为结尾的行 |
\<root\> | 匹配单词 |
| | 抑止后面的一个字符的特殊含义 |
.* 匹配所有字符
^.* 匹配任意多字符开头
grep -i '^root' /etc/passwd
grep -i '[rot]\{4,7\}' /etc/passwd
egrep -i '[rot]{4,7}' /etc/passwd
扩展表达式
字符 | 含义 |
---|---|
+ | 对前一项进行1次或多次重复匹配 |
? | 对前一项进行0次或1次重复匹配 |
s|t | 匹配s项或t项中的一项 |
(exp)\(exp)\ | 将exp作为单项处理 |
{j} | 对前一项进行j次重复匹配 |
{j.} | 对前一项进行j次或更多次重复匹配 |
(.K) | 对前一项最多进行k次重复匹配 |
{j,k} | 对前一项进行j到k次重复匹配 |
egrep '[0-9]|[a-z]' /etc/passwd
egrep '^([0-9]|[a-z])' /etc/passwd