扩展的正则表达式
一、扩展的正则表达式
扩展正则表达式比基础正则表达式多了几个重要的符号。
注意,在使用这些扩展符号时,需要使用egrep命令
- “?”符号
 
- 用于匹配前一个字符0次或1次,所以"ro?t" 仅可以匹配rot、rt。
 
- “+”符号
 
- 用于匹配前一个字符1次以上,所以“ro+t”可以匹配rot、root等。
 
- “|”符号
 
- “|”符号是“或”的意思,即多种可能的罗列,彼此间是一种分支关系。
 - 例:
 

- “()” 符号
 
- “()” 符号通常需要和“|”符号联合使用,用于枚举一系列可替换的字符
 
# 使用“()”和“|”匹配hard、hold或hood
h(ar|ol|oo)d二、通配符
- 通配符和正则表达式之间存在一些差异,通配符主要用在文件名的匹配上,正则表达式主 要使用在对文件内容的匹配上。
 
1、“*” 符号
- 代表0个或多个字符
 
# 列出当前目录下以“.doc”结尾的文件
[root@sunday-test ~]# ls -l *.doc2、“?” 符号
- 代表任意一个字符
 
3、“{}” 符号
- 匹配所有括号内包含的以逗号隔开的字符
 

4、 “^” 符号和 “!” 符号
- 这两个符号往往和“[]”一起使用,当出现在“[]”中的时候,代表取反。所以[ ^A] 或 [!A] 都代表不是A
 
特殊的POSIX字符
grep支持一类特殊的POSIX字符,列举如下:
字符  | 含义  | 
[:alnum:]  | 文字数字字符  | 
[:alpha:]  | 文字字符  | 
[:digit:]  | 数字字符  | 
[:graph:]  | 非空字符(非空格、控制字符)  | 
[:lower:]  | 小写字符  | 
[:upper:]  | 大写字符  | 
[:cntrl:]  | 控制字符  | 
[:print:]  | 非空字符(包括空格)  | 
[:punct:]  | 标点符号  | 
[:space:]  | 所有空白字符(新行,空格,制表符)  | 
[:xdigit:]  | 十六进制数字(0-9,a-f,A-F)  | 
常用grep命令选项
- -A NUM,--after-context=NUM 除了列出符合行之外,并且列出后NUM行。
 - -B NUM,–before-context=NUM 与 -A NUM 相对,但这此参数是显示除符合行之 外并显示在它之前的NUM行。如: (从file中搜寻有panda样式的行,并显示该行的前1行)
 - -C [NUM], -NUM, --context[=NUM] 列出符合行之外并列出上下各NUM行,默认值 是2。
 - -c, --count 不显示符合样式行,只显示符合的总行数。若再加上-v, --invert-match, 参数显示不符合的总行数
 - -i, –ignore-case 忽略大小写差别
 - -n, –line-number 在匹配的行前面打印行号
 - -v, –revert-match 反检索,只显示不匹配的行
 - -s 不显示不存在或无匹配文本的错误信息
 - -w: 整词比对, 类似 \
 - -o: 只输出符合匹配的字符串。 (gnu 新版独有, 不见得所有版本都支持.)
 - -E: 切换为 egrep
 










