正则表达式与扩展正则表达式 

正则表达式: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