grep:根据模式搜索文本,并将符合模式的文本行显示出来

Pattern:文本字符和正则表达式的元字符组合而成匹配条件

    -i :忽略大小写

    --colour/--color:显示高亮

    -v :显示没有被匹配到的行

    -o :只显示被模式匹配到的字符串

    -E   :使用扩展正则表达式 

    -A   :A后跟数字,显示其后的N行

    -B   :B后跟数字,显示其前的N行

    -C   :C后跟数字,显示其前后各N行


* :任意长度的任意字符

? :任意单个字符

[]:

[^]:

正则表达式

元字符:

    .     :匹配任意单个字符

    []    :匹配指定范围内的任意单个字符

    [^]   :匹配指定范围外的任意单个字符(取反的意思)

    [:digit:]:所以数字

    [:alpha:]:所以字母

    [:alnum:]:所以数字和字母

    [space::]:空白字符


字符个数:

    *     :匹配其前面的字符任意次

    .*    :任意长度的任意字符

    \?    :匹配其前面的字符一次或0次

    \{m,n\}:匹配其前面的字符至少m次,至多n次


位置锚定:

    ^    :锚定行首,此字符后面的任意内容必须出现在行首

    $    :锚定行尾,此字符前面的任意内容必须出现在行尾

    ^$   :空白行

    \<或\b:锚定词首,其后面的任意字符必须作为单词首部出现

    \>或\b:锚定词尾,其前面的任意字符必须作为单词尾部出现

    \< \>:精确匹配

分组:

    \( \):括号内的内容是一个整体

    后向引用

    \1   :引用第一个括号内的所有内容

    \2   :引用第二个括号内的所有内容

    ……


扩展正则表达式:

    +    :匹配其前面的字符至少一次

    |    :或(or),选择|左或右

    ()   :分组. \1,\2,\3,...


例如:

找出所有的数字:

    egrep --color '\<([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>'

找出所有的IP地址   

    ifconfig|egrep --color '(\<([1-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\>\.){3}\<([1-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\>'

    结果:inet addr:10.10.21.225  Bcast:10.10.255.255  Mask:255.255.0.0

IPv4:

5类:A B C D E

A:1-127

B:128-191

C:192-223