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的功能。