正则表达式与扩展正则表达式
正则表达式:REGular EXPression ,REGEXP
grep (Global Research):使用基本正则表达式定义的模式来过滤文本的命令
grep [options] PATTERN [FILE...]
-i:忽略字符大小写
--color:加颜色
-v:显示没有被模式匹配到的行
-o:只显示被模式匹配到的字符串
Pattern:文本字符和正则表达式的元字符组合而成的匹配条件
-i:忽略字符大小写
--color:加颜色
元字符:
.:表示匹配任意单个字符
[]:匹配指定范围内的任意单个字符
[^]:匹配指定范围外的任意单个字符
字符集合:
[:digit:]:数字
[:lower:]:小写字母
[:upper:]:大写字母
[:punct:]:标点符号
[:space:]:空白字符
[:alpha:]:所有字母
[:alnum:]:所有数字和字符
匹配次数(贪婪模式):
*:匹配其前面的字符任一次
.*:匹配任意长度的任意字符
?:匹配其前面的字符一次或零次 只要部分匹配即可
\?:匹配其前面的字符一次或零次
\{m,n\}:匹配其前面的字符至少m次,至多n次
位置锚定:
^:锚定行首,此字符后面的任意内容必须出现在行首
$:锚定行尾,此字符前面的任意字符必须出现在行尾
^$:空白行
例如:找出/etc/inittab下所有已数字结尾的行
\<或\b:锚定词首,其后面的任意字符必须作为单词的首部出现
\>或\b:锚定词尾,其前面的任意字符必须作为单词的尾部出现
\<root\>:精确出现
分组:
\(\)
\(ab\)*:ab为一个整体
后向引用:
\1:第一个左括号以及与之对应的右括号所包括的所有内容
例如:在/etc/inittab下匹配数字并以数字结尾的内容
grep ‘\([0-9]\).*\1$’ /etc/inittab
\2:
\3:
扩展正则表达式:egrep
字符匹配:
.:表示匹配任意单个字符
[]:匹配指定范围内的任意单个字符
[^]:匹配指定范围外的任意单个字符
次数匹配:
*:匹配其前面的字符任一次
?:匹配其前面的字符一次或零次 部分匹配就行
+:匹配其前面的字符至少一次
{m,n}:匹配其前面的字符至少m次,至多n次
位置锚定:
位置锚定:
^:锚定行首,此字符后面的任意内容必须出现在行首
$:锚定行尾,此字符前面的任意字符必须出现在行尾
^$:空白行
分组:
()
\1,\2,\3...
或者:
|:or
C|cat:匹配C和cat
(C|c)at:匹配cat和Cat