码迷,mamicode.com
首页 > 系统相关 > 详细

Linux之扩展正则表达式(egrep)

时间:2018-02-26 14:58:06      阅读:300      评论:0      收藏:0      [点我收藏+]

标签:EGREP   LINUX   扩展正则表达式   

egrep:

 支持扩展的正则表达式实现类似于grep文本过滤功能:grep -E

   grep [OPTIONS] PATTERN [FILE...]
   grep [OPTIONS] [-e PATTERN | -f FILE] [FILE...]
      选项:
        --color=auto:对匹配到的文本着色后高亮显示:
        -i:ignorecase,忽略字符的大小写:
        -o:仅显示匹配到的字符串本身:
        -v, --invert-match:显示不能被模式匹配到的行:
        -E, --extended-regexp:支持使用扩展的正则表达式元字符:
        -q, --quiet, --silent:静默模式,即不输出任何信息
        -G,支持基本正则表达式

        -A#:after,后#行
        -B#: before,前#行
        -C#:context,前后各#行
      扩展正则表达式的元字符:
         字符匹配:
              .:任意单个字符
              []:指定范围内的单个字符
              [^]:指定范围外的单个字符
             次数匹配:
               *:任意次,0,1或多次
               ?:0次或1次,其前字符可有可无
               +:其前字符至少1次
               {m}:期前的字符m次
               {m,n}:至少m次,至多n次
                {0,n}
                {m,}                              
         位置锚定:
               ^:行首锚定:
               $:行尾锚定:
               \<,\b:词首锚定
               \>,\b:词尾锚定:

         分组及引用:
            ():分组;括号内的模式匹配到的字符会被记录于正则表达式引擎的内部变量中;
            后向引用:\1,\2....
         或:
           a|b:a或者b;
              C|cat: C或cat
              (c|C)cat:cat或Cat

      示例:
             1.显示/etc/passwd文件中不以/bin/bash结尾的行: 
               ~]#egrep -v "/bin.bash" /etc/passwd                 
             2.找出/etc/passwd文件中两位数或三位数;  
               ~]#egrep "\<[0-9]{2,3}\>"                
             3.找出/etc/rc.d/rc.sysinit或/etc/grub2.cfg.文件中,至少以一个空白字符开头,且后面非空白字符的行:
               ~]#egrep "^[[:space:]]+[^[:space:]]" /etc/grub2.cfg
             4.找出"netstat -tan"命令中以‘LISTEN’后跟0,1或多个空白字符结尾的行

       示例:
          1、找出/proc/meminfo文件中,所有已大写或小写S开头的行;至少有三种实现方式;
              (1)
               ~]#grep "^[Ss]" /proc/meminfo
              (2) 
               ~]#grep -i "^[s]" /proc/meminfo
              (3)
               ~]#egrep "^(s|S)" /proc/meminfo

           2.显示当前系统上root、centos或user1用户的相关信息;
              ~]#grep -E "^(root|centos|user1)\>" /etc/passwd
           3.找出/etc/rc.d/init.d/functions文件中某单词后面跟一个小括号的行;
              ~]#grep -E -o "_[[:alnum:]]+\(\)" /etc/rc.d/init.d/functions
           4.使用ehco命令输出一绝对路径,使用egrep取出其基名;
              ~]#echo /etc/sysconfig | grep -E -o "[^/]+/?$"
              进一步:取出其路径名:类似于对其执行dirname的结果:
           5.找出ifconfig命令结果中的1-255之间的数值;
              ~]#ifconfig | grep -E -o "\<([1-9]|[1-9][0-9]|1[0-9]{2}|2[0-9][0-9]|25[0-5])\>"
           6.添加用户bash,testbash,basher以及nologin(其shell为/sbin/nologin;而后找出/etc/passwd文件中用户同名shell名的行:
             ~]#grep -E "^([^:]+\>.*\1$" /etc/passwd
                            7.找出ifconfig命令结果中的ip地址;
                            ~]fconfig | grep ‘[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}‘

Linux之扩展正则表达式(egrep)

标签:EGREP   LINUX   扩展正则表达式   

原文地址:http://blog.51cto.com/12843522/2073100

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!