码迷,mamicode.com
首页 > 其他好文 > 详细

正则表达式

时间:2015-09-01 10:56:29      阅读:266      评论:0      收藏:0      [点我收藏+]

标签:grep egrep

grep相关用法:

正则表达式

作用:grep 文本搜索工具,根据用户制定的模式(partern)逐行搜索目标文本,打印匹配的行。

模式: 正则表达式的元字符及文本字符所编写的过滤条件。


元字符:字符表示其字面意义,而用于表示通配或控制功能。


语法:

技术分享

             -v:显示模式匹配不到的行

            -i:忽略字符大小写

            -o:仅显示能够模式匹配到串

            -q:静默模式

            -E:扩展的正则表达式

技术分享

    

基本正则表达式的元字符

字符匹配

  •   .:匹配任意单个字符

  •   []:匹配指定范围内额任意单个字符

  •  [^]:匹配指定范围内的任意单个字符,非...

 指定字符集

  • [[:lower:]]表示[a-z]

  • [[:upper:]]表示[A-Z]

  • [[:alnum:]]表示[a-zA-Z0-9]

  • [[:alpha:]]表示[a-zA-Z]

  • [[:space:]]表示空格和tab键

  • [[:digit:]]表示[0-9]


 次数匹配元字符,用于要指定其次数字符的后面,前面字符出现多少次

          *:任意次

        \?:0次或1次

       \+:1次或多次

   \{m\}:精确m次数

 \{m,n\}:至少m次,至多n次

  \{0,n\}:至多n次    

  \{m,\}:至少m次

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

技术分享


 位置锚定    

        ^:行首锚定,用于模式的最左侧

        $:行尾锚定,用于模式的最右侧,使用 单引号作强应用

\<,\b:词首锚定,表示单词模式的左侧

   \>,\b:词尾锚定,表示单词模式的右侧

     ^$:空白行   

技术分享


分组符号:\(\)多个字符当成一个字符

      分组的小挂号中的模式匹配到的内容,会在执行过程总被正则表达式引擎记录下来,保存内置的变量中,\1,\2

        \1:从左侧起,第一个左括号,以及与之配对的右括号中间的模式所匹配到的内容

        \2:从左侧起,第二个左括号,以及与之配对的右括号中间的模式所匹配到的内容

     后向应用,使用变量引用前面的分组鼓号中的模式所匹配的字符。


扩展的正则表达式

    grep家庭有3个命令

        grep     基本的正则表达式

        -E   扩展的正则表达式

        -F   不支持正则表达式(字符当元字符搜索)

        egrep    扩展的正则表达式

        fgrep    不支持正则表达式


    扩展正则表达式的元字符:

        字符匹配:

               .:任意单个字符

            []:匹配指定范围内额任意单个字符

           [^]:匹配指定范围内的任意单个字符,非...

    

      次数匹配:

            *:任意次数

          ?:0次或1次

           +:1次以上 

      {m}:精确匹配m次

      {m,n}:至少m次,至多n次

        

           锚定:   

            ^:锚定行首

            $:锚定行尾

      \<,\b:词首

      \>,\b:词尾 

       

            分组:()

            后向引用,\1,\2,.....

    

           或者

            a|b

            C|cat:不表示Cat或cat,而表示C或cat

            要写成(C|c)at

技术分享

练习

  1. 显示/etc/passwd文件中以bash结尾的行


  2. 技术分享

  3. 显示/etc/passwd文件中的两位数或三位数


  4. 技术分享

  5. 显示`netstat -tan`命令结果中以‘LISTEN’后跟0个、1个或者多个空白字符结尾


  6. 技术分享

  7. 添加用户bash、testbash、basher以及nologin用户(nologin用户的shell为/sbin/nologin);而后找出/etc/passwd文件中用户名与其shell名相同的行


  8. 技术分享

  9. 显示当前系统上root、centos或者user1用户的默认shell和UID (请事先创建这些用户,若不存在)


  10. 技术分享

  11. 找出/etc/rc.d/init.d/functions文件中某单词(单词中间可以存在下划线)后面跟着一组小括号的行


  12. 技术分享

  13. 使用echo输出一个路径,而后egrep找出其路径基名;进一步的使用egrep取出其目录名


  14. 技术分享

  15. 技术分享

  16. 找出ifconfig命令执行结果中1-255之间的数字

技术分享

正则表达式

标签:grep egrep

原文地址:http://youenstudy.blog.51cto.com/6722910/1690358

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