grep命令

 

    通过搜索与PATTERN匹配的字段,在FILE文件中查找到匹配的字段并显示出来。

    格式:grep [options] PATTERN [FILE...]

    

options

  -A num:文本后几行

        # grep -A 3 "root" /etc/passwd    
        root:x:0:0:root:/root:/bin/bash
        bin:x:1:1:bin:/bin:/sbin/nologin
        daemon:x:2:2:daemon:/sbin:/sbin/nologin
        adm:x:3:4:adm:/var/adm:/sbin/nologin

  -B #:模式之前的#行,也显示出来

  -C #:模式前后#行,都显示出来

  --colour=[颜色] 显示匹配的字体颜色

        # grep --colour=auto "root" /etc/passwd

        root:x:0:0:root:/root:/bin/bash

        operator:x:11:0:operator:/root:/sbin/nologin

  -c,--count :显示匹配行的总数

        # grep -c "root" passwd

        2

  -E:作为egrep匹配处理

  -e:作为包含以-为开头行,有效

  -f:从文件中的每一行作为匹配模式来获取

  -i:忽略匹配模式的大小写

        # grep -i "root" passwd

        root:x:0:0:root:/root:/bin/bash

        operator:x:11:0:operator:/root:/sbin/nologin

        ROOT:x:0:0:Root:/Root:/bin/bash

  -n:在输出行前面标记上行号

        # grep -n "root" passwd

        1:root:x:0:0:root:/root:/bin/bash

        12:operator:x:11:0:operator:/root:/sbin/nologin

  -o:只显示于模式匹配的部分

        # grep -o "root" passwd

        root

        root

        root

        root

  -v:不取与之匹配的模式。


    在grep中,元字符 ?, +, {, |, (, 和 ) 丧失了它们的特殊意义;作为替代,使用加反斜杠 \?, \+, \{, \|, \(, 和 \) 

         \?:0次或1次

         \+:至少一次

         \{\}:指定次数

         \| :选择

         \(\):分组

           例如: # grep "\(l..e\).*\1" like

         .:任意单个字符

        \<锚定词首:

        >\锚定词尾:

        \<PATTEN>\:锚定一个模式,如单词,一个数


egrep命令:grep -E 与之类同

    扩展正则表达式

        元字符部分:

          . :任意单个字符

          ? :最多匹配一次

          *:零次或更多次

          +:一次或更多次

        {n}:精确匹配n次

        {n,}:n次或更多次,至少n次

        {n,m}:至少n次,但不多于m次

          a|b,a或者b二选一

          \<锚定词首

          >\锚定词尾

         ()表示分组,().*\1前面的组再次出现后面


    模式匹配的特殊写法部分,以下写法均代表一个字符,在grep和egrep中可以通用:

        [:lower:]:小写字母

        [:upper:]:大写 字母

        [:digit:]:数字

        [:alpha:]:大小写字母

        [:alnum:]:大小写字母和数字

        [:space:]:空格

        [:punct:]:标点符号


fgrep命令:grep -F与之类同 

    快速正则表达式

     grep把模式当做正则表达式看,fgrep把模式当做固定字符串看,所以后者要比前者速度快,当然同

时后者的搜索功能要弱于前者。