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