23. grep正则表达式

Date:

2018-09-02

23.1. grep

grep

global search regula expression and print out the line.

分类:
  • 基本正则匹配

  • 扩展正则匹配

23.2. grep语法

--color

高亮显示匹配到字符串

-v

显示不能被匹配的行

-i

忽略大小写

-o

仅仅显示匹配到的

-q

静默模式

-A

后面几行

-B

前面几行

-C

前后几行

-E

启用扩展

23.3. 基本的正则表达式

23.3.1. glob通配

  • * 代表任意长度的任意字符

  • ?: 表示任意单个字符

  • []:匹配指定范围的任意的单个字符

  • [^]:取反

  • [alnum]:所有字母和数字

  • [:alpha:]:字母

  • [:digit:]:数字

  • [:lower:]:小写字母

  • [:upper:]:大写字母

  • [:punct:]:标点符号

  • [:space:]:空白字符,不是仅仅空格

23.3.2. 字符匹配(POSIX字符类)

linux下的grep除fgrep外,都支持POSIX的字符类。

 1.                   任意字符一次
 2[]                  集合中任一个字符
 3[^]                 几集合之外任何一个,**注意**:这个和位置锚定中的^字符不一样。
 4[:alpha:]           字母
 5[:alnum:]           字母数字
 6[:digit:]           数字
 7[:punct:]           标点符号
 8[:space:]           空白字符
 9[:upper:]           大写
10[:lower:]           小写
11[:graph:]           非空字符(非空格、控制字符)
12[:cntrl:]           控制字符
13[:print:]           非空字符(包括空格)
14[:punct:]           标点符号
15[:xdigit:]          十六进制数字(0-9,a-f,A-F)

23.3.3. 次数匹配

1*               多次
2\?              0次或者1次
3\+              1次或者更多次
4\{m\}           精确m次
5\{m,n\}         m到n次
6\{0,n\}         小于等于n次
7\{m,\}          大于等于m次

23.3.4. 位置锚定

1^           行首锚定
2$           行尾锚定
3\<          单词头锚定
4\>          单词尾锚定
5\b          单词边界锚定

23.3.5. 分组

1\(\)            分组
2\1              分组后的后向引用

23.3.6. 扩展正则表达式

egrep命令等同于grep -E,利用此命令可以使用扩展的正则表达式对文本进行搜索,并把符合用户需求的字符串打印出来。

fgrep命令等同于grep -F,它利用固定的字符串来对文本进行搜索,但不支持正则表达式的引用,所以此命令的执行速度也最快。 egrep即extend grep。扩展正则表达式。支持更多的re元字符

通过-G、-E、-F命令行选项来使用egrep和fgrep的功能,fgrep就是fixed grep或fast grep,它们把所有的字母都看作单词,也就是说,正则表达式中的元字符表示回其自身的字面意义,不再特殊。 linux使用GNU版本的grep。它功能更强,可以通过-G、-E、-F命令行选项来使用egrep和fgrep的功能。