zoukankan      html  css  js  c++  java
  • grep;egrep;fgrep

    -1 使用场景:搜索定位内容并输出(所在行)

    -2 三者区别:

         --1 grep  默认支持普通正则

         --2 egrep 默认支持扩展正则 等同于 grep -E

         --3 fgrep 速度最快,不支持正则表达式        

    -3 使用格式:grep 参数 匹配式 文件

    -4 参数:可合并

    -5 匹配式:-1 需用引号 -2 支持正则表达式

    -6 具体使用方法:

      --1   常用参数

          --1 -v 反选

            eg:grep -v '^#' /etc/inittab

            #删除所有注释行,输出剩余行

          --2 -i 忽略匹配内容大小写

          --3 E 启用扩展正则表达式(匹配模式可调用扩展正则表达式功能)

            eg:grep -iE "^(a|ab|c)" /home/test

            #输出以a或者A,ab(任何大小写组合),c或者C开头的行

          --4 -o 只显示匹配到的内容,而不是所在行

          --5 --color=auto  利用颜色凸显匹配内容

          --6 -A n 显示匹配行+匹配行后面的n行

            -B n 显示匹配行+匹配行前面的n行

            -C n 显示匹配行+匹配行前面的n行+匹配行后面的n行(即A+B参数的合并)

          --7 -n 行首加入行号

            eg:grep -n "^$" test

            #将空白行的行号显示出来

          --8 -w 匹配范围限定为词

            eg:cat goface.txt

                goface

              gofaceme

              grep ’goface’ goface.txt

              goface

              gofaceme

              grep -w ’goface’ goface.txt

              goface

          --9 -R 递归匹配

      --2   正则表达式

          --1 ^ 锚定行守或者[^]取反

          --2 $  锚定行尾

            eg:^和$组合

              grep -v '^$' test

              #删除所有空行,输出剩余行

          --3 () 分组

          --4 |  或

            eg: ()和|组合

              egrep '^(a|ab|c)' /home/test

              #匹配a或者ab或者c开头的行

          --5 . 代表一个任意字符

          --6 * 代表前面紧邻的0或多个匹配

              ? 代表前面紧邻的0或1个匹配

             + 代表前面紧邻的1或多个匹配

          --7 {n} 代表前面紧邻的n个匹配

            {n,}代表前面紧邻的至少n个匹配

            {,n}代表前面紧邻的至多n个匹配

            eg:

            ifconfig | egrep -o 'addr:([0-9]{1,3}.){3}[0-9]{1,3}' | grep -v "127.0.0.1"

            #获取本地网卡ip

              ([0-9]{1,3}匹配任意1-3位数的数字

              .匹配小数点

              {3} 匹配三组任意1-3位数+小数点

          --8 <或者> 锚定词首或者词尾,可单独使用

          --9 字符集

                  [:digit:] : 所有数字, 相当于0-9           eg:grep '[[:digit:]]'  匹配所有单个数字,[:digit:]表明0-9,[[:digit:]]表明[0-9],所以即匹配0-9的任意单个数字
                  [:lower:]:所有的小写字母,相当于a-z
                  [:upper:]:所有的大写字母,相当于A-Z
                  [:alpha:]: 所有的字母,相当于a-z,A-Z
                  [:alnum:]: 相当于0-9a-zA-Z
                  [:space:]: 空白字符
                  [:punct:]:所有标点符号

      --3 关于shell通配符、元字符和正则表达式

        通配符、元字符和正则表达式是完全不同的东西,这也是为什么最好需要将grep所匹配的内容用单引号''括起的原因,具体解释如下:

        例如echo '$PATH' | grep --color=auto '$PATH' 则输出$PATH

          echo '$PATH' | grep --color=auto "$PATH" 则不会输出任何东西

        解析:

          --1

            针对 echo '$PATH',首先shell解释器解读单引号',获悉之后内容强制转义得$PATH,利用|传导给grep之后,shell解释器看到单引号',得知

            此处命令完全交由grep管理,则grep采用正则表达式进行处理,按照正则的处理方式看到进行转义,将本来是锚定尾部的$,转义成普通字符$,

            所以输出$PATH

          --2 

            而当使用双引号的时候,shell解释器会先一步将匹配项进行解析,看到转义字符,将本来是定位变量的$,转义成普通字符$,得到的结果是

            $PATH,然后将$PATH交给grep进行处理,grep利用正则处理,此时$前因为没有了转义字符,故被grep认为是锚定尾部,故没法匹配,什么也

            没有输出

              

           

            

    [星空刺] |-->一颗星辰一闪即逝,支撑它的唯有方向和目的
  • 相关阅读:
    【转】wpa_supplicant与wpa_cli之间通信过程
    CSS Hack
    HTML5测试(二)
    HTML5测试(一)
    百分号编码(URL编码)
    DOM事件处理函数
    JS数组
    JS中for循环嵌套
    Codecombat 游戏攻略(计算机科学三)2
    Codecombat 游戏攻略(计算机科学三)
  • 原文地址:https://www.cnblogs.com/aaa103439/p/3342035.html
Copyright © 2011-2022 走看看