grep: Global search REgular expression and Print out the line.
作用:文本搜索工具,根据用户指定的“模式”对目标文本逐行进行匹配检查;打印匹配到的行;
模式:由正则表达式字符及文本字符所编写的过滤条件;
REGEXP:由一类特殊字符及文本字符所编写的模式,其中有些字符不表示字符字面意义,而表示控制或通配的功能;
分两类:
基本正则表达式:BRE
扩展正则表达式:ERE
grep -E, egrep
grep [OPTIONS] PATTERN [FILE...]
选项:
--color=auto: 对匹配到的文本着色显示;
-v: 显示不能够被pattern匹配到的行; 反转
-i: 忽略字符大小写;
-o: 仅显示匹配到的字符串;
-q: 静默模式,不输出任何信息;
-A #:after, 后#行
-B #: before, 前#行
-C #:context, 前后各#行
-E:使用ERE;
正则表达式
基本正则表达式元字符:
字符匹配:
. 匹配任意单个字符;
[] 匹配指定范围内的任意单个字符
[^] 匹配指定范围外的任意单个字符
[:digit:]、[:lower:]、[:upper:]、[:alpha:]、[:alnum:]、[:punct:]、[:space:]
匹配次数:用在要指定次数的字符后面,用于指定前面的字符要出现的次数;
*匹配前面的字符任意次;
例如: grep "x*y"
abxy
xay
xxxxxxy
贪婪模式
.* 任意长度的任意字符;
\? 匹配其前面的字符0或1次;即前面的可有可无;
\+ 匹配其前面的字符至少1次;
\{m\} 匹配前面的字符m次;
\{m,n\} 匹配前面的字符至少m次,至多n次;
\{0,n\} 匹配前面的字符至多n次;
\{m,\} 匹配前面的字符至少m次;
位置锚定:
^ 行首锚定;用于模式的最左侧;
$ 行尾锚定;用于模式的最右侧;
^PATTERN$ 用于模式匹配整行;
^$: 空行;
^[[:space:]]*$ 一行都是空格
\< 或 \b:词首锚定;用于单词模式的左侧;
\> 或 \b:词尾锚定;用于单词模式的右侧;
\<PATTERN\>:匹配整个单词;
分组:
:将一个或多个字符捆绑在一起,当作一个整体进行处理;
xy*ab
Note: 分组括号中的模式匹配到的内容会被正则表达式引擎记录于内部的变量中,这些变量的命名方式为: \1, \2, \3, ...
\1: 从左侧起,第一个左括号以及与之匹配右括号之间的模式所匹配到的字符;
ab\+\(xy*\):
\1: ab\+xy*
\2: xy
后向引用:引用前面的分组括号中的模式所匹配字符,(而非模式本身)
扩展的grep -e
元字符与基本grep相同,但在书写中可不使用转意符
另外egrep有新功能
或者:
a|b
C|cat: C或cat