0
点赞
收藏
分享

微信扫一扫

扩展的正则表达式

扩展的正则表达式

一、扩展的正则表达式

扩展正则表达式比基础正则表达式多了几个重要的符号。
注意,在使用这些扩展符号时,需要使用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 *.doc

2、“?” 符号

  • 代表任意一个字符

3、“{}” 符号

  • 匹配所有括号内包含的以逗号隔开的字符

扩展的正则表达式_Linux运维_02

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
举报

相关推荐

0 条评论