1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77
| Options: -E 使用扩展的正则表达式 -G 使用基本的正则表达式(默认) -e 使用多个正则表达式匹配 -f 读取文件中的表达式,可以写多行,会依次匹配每一行,使用#号可以注释单行 -i 忽略大小写 -w 匹配整个单词 -x 匹配整行 -s 不显示错误消息 -v 反向匹配,即显示没有匹配到的行 -m 在匹配到第几个后停止 -n 显示行号 -H 显示文件名 -h 不显示文件名 -o 只显示匹配到的内容,可用于数量统计 -q 静默模式,不显示任何输出,可用于条件判断语句,0则表示找到了匹配的行 -r 递归匹配目录,但是不包括软链接 -R 递归匹配目录,并且跟随软链接跳转 -L 只显示没有匹配到的文件名,不显示匹配内容 -l 只显示匹配到的文件名,不显示匹配内容 -c 统计匹配到的行数 -B 显示匹配到的行和该行的前几行 -A 显示匹配到的行和该行的后几行 -C 同时显示匹配到的行的前后几行,可以简写为-NUM,如-C 3简写为-3 --color=auto 高亮显示匹配到的字符,可选参数为always,never,auto --include=FILE_PATTERN 指定包含哪些文件或目录,支持正则匹配文件名 --exclude=FILE_PATTERN 排除哪些文件 --exclude-dir=PATTERN 排除指定目录
正则表达式REGEXP:由一类特殊字符及文本字符所编写的模式,其中有些字符(元字符)不表示字符字面意义,而表示控制或通配符的功能 元字符(metacharacters)是用来阐释字符表达式意义的字符,简言之,元字符就是描述字符的字符,它用于对字符表达式的内容、转换及各种操作信息进行描述 正则表达式(regular expression)就是用一个"字符串"来描述一个特征,然后去验证另一个"字符串"是否符合这个特征
正则表达式元字符 ^ 匹配行首,如^abc匹配所有以abc开头的行 $ 匹配行尾,如abc$匹配所有以abc结尾的行 ^$ 匹配空行 ^[[:space:]]*$ 匹配空白行,包括空格或tab所占的行 . 匹配除换行符(\n,\r)之外的任意单个字符,如a.c匹配abc,a2c等 * 匹配零个或多个先前字符,即匹配次数>=0次,如a*c匹配ac,aac,aaac等 .* 匹配任意长度的任意字符,如a.*c匹配ac,abc,aabbcc等 ? 匹配零个或一个先前的字符,即匹配次数<=1次,如a?c匹配c,ac + 匹配一个或多个先前的字符,即匹配次数>=1次,如a+c匹配ac,aac,aaac等 | 或匹配,如a|b|c匹配a或b或c () 分组,如abc([1-9])?匹配abc,abc1,abc123 [] 匹配指定范围内的任意单个字符,如[Aa]bc匹配Abc,abc [^] 取反,匹配指定范围之外的任意单个字符,如[^Aa]bc匹配除了Abc和abc之外 \ 转义符,如\$匹配$本身 \< 匹配单词词首,如\<abc匹配以abc开头的单词 \> 匹配单词词尾,如abc\>匹配以abc结尾的单词 {n} 匹配n次,如a{2}匹配aa {n,} 至少匹配n次,即>=n次,如a{2,}匹配aa,aaa等 {n,m} 匹配n-m次,包括n次和m次,即[n-m]次,其中n<=m,如a{2,4}匹配aa,aaa,aaaa {,m} 最多匹配m次,即<=m次,如ab{,2}匹配a,ab,abb \b 匹配单词边界,如\broot\b匹配单词root \B 匹配非单词边界,如root\B匹配rooter而不匹配root \w 匹配字母,数字和下划线,等同于[A-Za-z0-9_] \W 匹配非\w的字符 \s 匹配空白字符
基本正则表达式的特殊符号需要\转义,在扩展正则表达式中不需要 分组括号中的模式匹配到的内容会被正则表达式引擎记录到内部变量中,最多可以匹配9个模式,命名为\1...\9 分组匹配后项引用(...)(...)\1\2,\1表示从左侧起第一组括号里的模式所匹配到的字符,\2第二组括号,依次往后
POSIX字符 [[:alnum:]] 匹配任意一个字母或数字,同[0-Z]零-大写Z [[:alpha:]] 任意一个大小写字母,同[a-Z]小写a-大写Z [[:lower:]] 任意小写字母 [[:upper:]] 任意大写字母 [[:blank:]] 水平空白字符(空格和制表符) [[:space:]] 水平或垂直空白字符(比[:blank:]包含的范围广),同[\t\r\n\v\f] [[:cntrl:]] 任意一个控制字符(ASCII字符集中的前32个字符,退格,删除,警铃...),不可打印字符 [[:digit:]] 任意一个数字,同[0-9] [[:xdigit:]] 任意一个十六进制数,同[0-9a-F] [[:graph:]] 任意一个可打印的非空白字符 [[:print:]] 任意一个可打印字符 [[:punct:]] 任意标点符号
|