基础匹配
正则表达式(regex)是一种描述字符串集合的模式。grep、sed 和 awk 等工具使用正则表达式来搜索和转换文本。字面字符串是最简单的模式:它在行中匹配自身。
grep 'hello' file.txt
grep -i 'error' /var/log/syslog
将模式放在单引号中,使 Shell 原样传递给工具而不做解释。
正则表达式方言
日常使用中涉及三种方言,同一模式在不同方言中行为可能不同。
基本正则表达式(BRE) 是 grep 和 sed 的默认模式。字符 +、?、{ 、}、(、) 和 | 按字面匹配;需要反斜杠才能获得特殊含义。
扩展正则表达式(ERE) 使这些字符无需转义即具有特殊含义。使用 -E 标志启用 ERE;awk 默认使用 ERE。
grep -E 'error|warning' logfile
sed -E 's/[0-9]+/NUM/g' data.txt
Perl 兼容正则表达式(PCRE) 增加了 \d 等简写、环视和惰性量词。在可用的地方使用 grep -P。
grep -P '\d{3}-\d{4}' contacts.txt
如果包含 +、? 或交替的模式静默匹配不到任何内容,检查工具是否运行在 BRE 模式下。
锚点
锚点匹配位置而非字符。
| 模式 | 说明 |
|---|---|
^ |
行首 |
$ |
行尾 |
\b |
单词边界 |
\B |
非单词边界 |
\< |
单词开头(GNU) |


454

被折叠的 条评论
为什么被折叠?



