什么是正则表达式
基本正则表达式
| 正则符号 |
描述 |
| abc |
匹配abc |
| ^ |
匹配开头 |
| $ |
匹配结尾 |
| [集合] |
匹配集合中任意单个字符 |
| [^集合] |
对集合取反 |
| . |
匹配任意单个字符 |
| * |
匹配前一个字符任意次(包含0次) |
| .* |
匹配任意 |
| {n,m} |
匹配前一个字符n到m次 |
| {n,} |
匹配一个字符至少n次 |
| {n} |
匹配前一个字符n次 |
grep root /etc/passwd
root:*:0:0:System Administrator:/var/root:/bin/sh
daemon:*:1:1:System Services:/var/root:/usr/bin/false
_cvmsroot:*:212:212:CVMS Root:/var/empty:/usr/bin/false
grep ^root /etc/passwd
root:*:0:0:System Administrator:/var/root:/bin/sh
grep bash$ /etc/passwd
_mbsetupuser:*:248:248:Setup User:/var/setup:/bin/bash
grep "[abc]" /etc/passwd
grep "[^abc]" /etc/passwd
grep "[0-9]*" /etc/passwd
grep "[0-9]\{3,4\}" /etc/passwd
grep "[0-9]\{3\}" /etc/passwd
扩展正则
| 正则符号 |
描述 |
| + |
匹配前面的字符至少一次 |
| ? |
匹配前面的字符0次或1次 |
| () |
组合与保留 |
| "竖线" |
或者 |
| {m,n} |
匹配前面的字符m到n次 |
| {n,} |
匹配前字符至少n次 |
| {n} |
匹配前面的字符n次 |
grep -E "0{2,3}" /etc/passwd
_softwareupdate:*:200:200:Software Update Service:/var/db/softwareupdate:/usr/bin/false
grep -E "[a-z]+" /etc/passwd
grep -E "s?bin" /etc/passwd
grep -E "(root|daemon)" /etc/passwd
echo "ababab" |grep -E "(ab){2}"
ababab
Perl兼容的正则符号
| 正则符号 |
描述 |
| \b |
匹配单词边界 |
| \w |
匹配字符数字下划线 |
| \W |
和\w相反 |
| \s |
匹配空白 |
| \d |
匹配数字 |
| \d+ |
匹配多个数字 |
| \D |
匹配非数字 |
grep -P "\bbin\b" /etc/passwd
grep语法格式
- 用法:grep [选项] 匹配模式 [文件]
- 常用选项:
| 选项 |
说明 |
| -i |
忽略大小写 |
| -v |
取反匹配 |
| -w |
匹配单词 |
| -q |
静默匹配,不将结果显示在屏幕 |
小结
- 基本正则:,$,[],[],.,*,{n,m}
- 扩展正则:+,?,(),|,{}
- Perl兼容的正则:\b,\d,\s,\w