grep ‘root’ /etc/passwd

    -i  忽略字母大小写

    --colour 加颜色 grep --colour ‘root’ /etc/passwd

    -v 匹配到的行不显示,没有匹配到的显示

    -o 只显示被匹配到的串,每个串显示为一行 

    -E 使用扩展正则表达式

    -A #:显示其后#行

    -B # 显示其前#行

    -C # 显示其前后各#行

*:任意长度的任意字符

?: 任意单个字符

[]:

[^]:

a*b:匹配前面的a任意次

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

?: 匹配其前面的字符1次或0次(一般配合\?使用 )

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


位置锚定:

    ^:此字符后面的任意字符必须出现在行首

          grep ‘^root’ /etc/passwd

    $:锚定行尾

     grep ‘b..h$’/etc/passed匹配在passwd中以b开头,以h结尾的 ,中间有任意两个字符的行

    ^$:空白行

引用的时候用【】括起来

[:digit:]数字

[:lower:]小写字母

[:upper:]大写字母

[:punct:]标点符号

[:space:]空白字符

[:alpha:]所有字母

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


\<:其后面的任意字符必须作为单词首部出现  等同于\b

\>:其前面的任意字符必须作为单词的尾部出现   等同于\b

    例\<root\> 查找文本中root这个单词


\(\) :分组  多用于后项引用 用一个字符代替它 

     \(ab\)*  ab可以出现一次零次或任意次     

     \1:引用第一个左括号以及与之对应的右括号所包含的所有内容

              例:grep ‘\(l..e\).*\1’


扩展正则表达式:必须使用egrep  或者grep -E

   字符匹配:

       同上

   次数匹配

        *:

        ?:

        +:其前字符至少一次

        {m,n}:

    分组: 

       ():分组 不需要写斜线

    或者:

        | :or    


例:找出/boot/grub/grub.conf 1-255之间的整数

   grep --colour -E '\<([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>' /boot/grub/grub.comf 


找IP地址:

  \<[1-9]|[1-9][0-9]|1[0-9]{2}|2[01][0-9]|22[0-3]\>(\.\<([0-9]|[1-9][0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4])\>)\>){2}\.\<([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-4]\>