zoukankan      html  css  js  c++  java
  • 使用方便 正则表达式grep,sed,awk(一)

    一些无稽之谈:

    对于正则表达式,永远似了解不明白,看到一些代码,脚本定期,awk,sed。心里总有点虚。主要是记不住。平时又没怎么用,也就没总结了。

    如今有空,决定总结一下,顺便克服一下看到shell,js这些带有正则就心虚的弱点。

    打算分三篇文章来写

    正文:

    一般来说,正则分好几种。但基本都差点儿相同,我所了解的有 基本正则扩展正则”perl正则”,本文更偏向说记录基本正则扩展正则,它们在grep,egrep,sed,awk中发挥着重要发作用。

    開始正则前,先复习一下grep的一些经常使用參数:

    -n ,显示行号。
    -v, 反向选择
    -i,忽略大写和小写

    以下来始抄书了,參考《鸟哥的Linux私房菜.基础学习篇 》。先下载我们要用的文本:

    http://linux.vbird.org/linux_basic/0330regularex/regular_express.txt

     内容例如以下:


    先来学习基本正則表達式



    1.直接匹配

    1.分别找出含apple和is 的文本


    这应该是最简单的使用正则了



    2.方括号[]

    []主要是进行集合方面的匹配。使用方法我们还是用样例说明 

    2匹配含有test,tast的文本


    能够看出。[]就是从集合[ae]中选出一个一个来匹配



    3.方括号[]与中横线-结合

    对于想匹配含有一个数字的文本,我们能够写成[0123456789],但这样难免太麻烦,这就须要中横线了对于数字,能够写成[0-9], 相同,对于字母也能够应用上来,大写字母[A-Z],小写字母[a-z],也能够合在一块。如大写和小写字母[a-zA-Z].

    3,找出含有数字的文本



    4.方括号[] ,-,^,三者结合

    []中出现^表示取反,举例说明

    4.取出带有oo。但oo前不含g的文本


    最后一个”19:goooooogle yes!”为什么会匹配上呢?尽管前面是goo,明显不满足。可是。 go(oo)oogle,是满足的,所以匹配上了。这也许就是正则的难点之中的一个,你写出的正则也许存在bug,但你还没发现。

    5。 匹配带有oo,的文本。但oo前不含小写字母 

     

    看到了吧,这就是[],-,^共同使用,注意:^[]内才表示取反。


    5.^$

    这里又出现了^,但与上面的不一样。这里的^表示行首,对应的$就表示行尾。

    取出以the 开头的文本


    取出以数字或字母结尾的文本


    8取出空行


    空行用’^$’进行匹配


    6.点号与星号*

    点号.表示有且仅有一个随意字符

    星号表示反复前一个0个或多个字符


    9匹配形如g??d的字符串(gd之间有两个字符)


    如结果所看到的。点号.是表示一个随意字符。


    10 匹配至少连续两个o以上的字符。


    注意到这里。”*”的意义与我们所认识的通配符*是不一样的

    11匹配g开头g结尾的文本


    ’g*g’ 是不行的。由于*和通配符是不一样,正确的是’g.*g’

    所以,记住,正則表達式的*和通配符的 *不一样!

     


    7.转义

    假设我们想匹配的文本正好是代表一些特殊字符(《鸟哥的linux私房菜》中说是在shell中有特殊函义,我觉得是不对的,或者说让人误解,仅仅是 shell中的吗?比方他举的样例点号,在shell中代表的是本文件夹吧?事实上真正的原因是.是正则表达字符吧?),该怎样?转义。

    如匹配以点号 结尾的文本。我们知道.在正則表達式中表示匹配且仅匹配随意一个字符,所以能够用’.$’


    今天就先写到主要的正則表達式吧。


    參考资料:

    《鸟哥的Linux私房菜》

    Linux程序设计》

    http://www.ibm.com/developerworks/cn/education/aix/au-unixtips3/

    http://www.cnblogs.com/chengmo/archive/2010/10/10/1847287.html

    版权声明:本文博主原创文章,博客,未经同意不得转载。

  • 相关阅读:
    ORACLE的程序包1程序包的基
    JAVA中方法重载,方法覆盖,方法继承等小结
    使用DBMS_JOB包创建ORACLE定时任务
    linux shell 中判断语句
    oracle direction目录
    Java加载类的加载顺序
    Struts2非常简单实用的身份验证功能
    关于ListView优化的一点心得
    使用webview将网页打包成apk
    关于android下的冒烟测试
  • 原文地址:https://www.cnblogs.com/bhlsheji/p/4886445.html
Copyright © 2011-2022 走看看