egrep 相当于 grep -E
1. 特殊字符
^ : 锚定开头^a, 以a开头, 默认锚定一个字符
$ :锚定结尾a$, 以a结尾, 默认锚定一个字符
示例:
egrep "^ac$" file # 精确匹配以a开头, 以c结尾
egrep "^a" file # 模糊匹配以a开头
egrep "c$" file # 模糊匹配以c结尾
2. 匹配符:匹配字符串
. : 匹配除回车以外的任意一个字符
() : 字符串分组
[] : 定义字符类, 匹配括号中的一个字符
[^] : 表示否定括号中出现字符类中的字符,取反。
\ : 转移字符
示例:
egrep "^a.c$" file # 匹配a开头、c结尾、中间任意一个字符发字符串
egrep "^a[0-9]c$" file # 匹配a开头、c结尾、中间一个字符在0-9范围的字符串
egrep "^a[^0-9]c$" file # 匹配a开头、c结尾、中间一个字符不在0-9的字符串
egrep "^a\*c$" file # 匹配a开头、c结尾、中间是*的字符串
egrep "^(a|b)c$" file # 匹配a开头或b开头、c结尾的字符串
3. 限定符:对前面的字符或者字符串做限定说明
? : 与星号相似, 但略有变化, 表示该字符出现一次或不出现
+ : 与星号相似, 表示其前面字符出现一次或多次, 但必须出现一次
{n,m}:某个字符之后出现, 表示该字符最少n次, 最多m次
{m}: 正好出现了m次
示例:
egrep "^ab*c$" file # 匹配a开头、c结尾、中间b出现多次或者不出现的字符串
egrep "^ab?c$" file # 匹配a开头、c结尾、中间b出现一次或者不出现的字符串
egrep "^ab+c$" file # 匹配a开头、c结尾、中间b出现一次或多次的字符串
egrep "^ab{3}c$" file # 匹配a开头、c结尾、中间b出现三次的字符串
egrep "^ab{2,5}c$" file # 匹配a开头、c结尾、中间b出现2-5次的字符串
3. POSIX特殊字符
[:alnum:] : 匹配任意字母字符0-9 a-z A-Z
[:alpha:] : 匹配任意字符, 大写或小写
[:digit:] : 数字0-9
[:graph:] : 非空字符(非空格控制字符)
[:lower:] : 小写字符a-z
[:upper:] : 大写字符A-Z
[:cntrl:] : 控制字符
[:print:] : 非空字符(包括空格)
[:punct:] : 标点符号
[:blank:] : 空格和TAB字符
[:xdigit:] : 16进制数字
[:space:] : 所有空白字符(新行、空格、制表符)
注: [[ ]] 双中括号的意思:第一个中括号是匹配符[] 匹配中括号中的任意一个字符, 第二个[]是格式,如[:digit:]
示例:
egrep "^a[[:alnum:]]c$" file # 匹配a开头、c结尾、中间是任意数字或字母的字符串
本文详细解析了grep和egrep(扩展grep)在正则表达式中的特殊字符、匹配符、限定符和POSIX特殊字符的使用技巧,通过实例帮助理解如何精确和模糊匹配字符串,以及如何利用它们进行字符串操作和文件搜索。
2146

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



