首页 > 代码库 >     linux 中的文本处理工具,grep,egrep

    linux 中的文本处理工具,grep,egrep

一:grep与egrep简介
                   grep与egrep是在linux中对linux文本搜索用的比较多的一个工具。它结合正则表达式实现与模型匹配的行。

二:语法格式:               

                  grep [option]... ‘PATTERN‘ FILE... 支持基本正则表达式
                  egrep [option]... ‘PATTERN‘ FILE...支持扩展正则表达式
                  [option]常用的主要有:
                          -v: 反向选取即显示哪些没有匹配到的行
                          -o: 显示匹配到的字符串,而不是整行
                          -i: ignore-case,忽略字符大小写
                          -E: 支持使用扩展正则表达式相当于egrep
            PATTERN:
                  这里主要指的是正则表达式 ,正则表达式是一类字符所书写的模式,其中许多字符不表示其字面意义,而是表达控制或通配等功能;
                元字符:不表示其字面意义,而用于额外功能性描述,分别为基本正则表达式和扩展正则表达式。


三:我们结合grep与egrep实例 简单介绍下两种的区别
              1、显示/boot/grub/grub.conf中以至少一个空白字符开头的行;
                  # grep "^[[:space:]]\{1,\}" /boot/grub/grub.conf
                  # egrep "^[[:space:]]{1,}" /boot/grub/grub.conf    
              2.显示当前系统上root、fedora或user1用户的默认shell;
                  # grep -E "^(root|fedora|user1):" /etc/passwd | cut -d: -f7    注意其中可以直接使用逻辑表达式中的"|"符号
              3.找出/etc/rc.d/init.d/functions文件中某单词后跟一组小括号“()”行;
                  # grep -o    "\<[[:alnum:]]\+\>\(\)" /etc/rc.d/init.d/functions
                  # egrep -o  "\<[[:alnum:]]+\>\(\)" /etc/rc.d/init.d/functions   注意其中可以直接使用扩展正则表达式中的"+"号
             4.使用echo命令输出一个路径,而后使用grep取出其基名;
                  # echo "/etc/sysconfig/" | grep -o  "[[:alnum:]]\+/\?"         
                  # echo "/etc/sysconfig/" | egrep -o  "[[:alnum:]]+/?"          注意其中可以直接使用?号,grep则需要转译
        不难看出egrep 可以直接使用一些grep中遇到的需要转译的字符


 四: grep与egrep总结
      grep支持的基本正则表达式有:
      字符匹配:., .*, [], [^]
          次数匹配:(通过分组的方式对不止一个字符做次数匹配)  *, \?, \+, \{m,n\}
          位置锚定:^, $, \< (\b), \> (\b)
          分组及引用:\(\), \n  
          
          egrep支持的扩展正则表达式有:
            次数匹配:*, ?, +, {m,n}
          分组引用:(), \n
          或者:a|b  
        因此 我们发现在egrep的用法更加强大与简洁

  

本文出自 “linux运维” 博客,请务必保留此出处http://germanygu.blog.51cto.com/3574209/1437582