美文网首页正则表达式学习笔记
【Linux操作】---正则表达式学习笔记(二)

【Linux操作】---正则表达式学习笔记(二)

作者: 卡布达b1 | 来源:发表于2020-05-13 16:59 被阅读0次

    前言:上一篇我们初步感受了“正则表达式”的魅力。而在上次的例子中,我们处理的属于“位置匹配”的正则。而在实际应用中,还有一种常见的类型,叫做“连续次数匹配”。
    2.连续次数匹配
    那么,什么叫“连续次数匹配”呢?还是用实际例子来说明。
    比如,你有一个test.txt文件,里面有五行字符串:

    a
    aa
    aaa
    abc
    abcc
    

    现在,我想匹配包含“aa”的字符串,怎么操作呢?有的同学可能会这样:

    cat test.txt |grep "aa"
    
    输出: 匹配“aa”字符串

    这样,包含“aa”的两个字符串都被打印出来了。但是如果我想打印100个“a”,难道要手动输入100次吗,答案当然是不用,还是用“aa”举例:

    cat test.txt|grep "a\{2\}"
    

    输出:

    和grep "aa"效果相同
    掌握这个方法以后,我们只需将"a\{2\}"替换成"a\{100\}"即可匹配文本中含有连续100个“a”的字符串。

    请继续思考输出结果,由于‘aa’和‘aaa’都包含“aa”,所以都被打印出来了。
    但是如果我只想打印‘aa’,而不想要‘aaa’呢?那么我们可以这样限定:

    cat test.txt |grep "\<a\{2\}\>" -n
    

    输出:

    只打印"aa"所在的行
    这一次我还加上了-n参数,可以顺便打印所在的行数,可以看到,在使用"\<a\{2\}\>"时,只有第二行被打印出来了,因为这个正则表示的是:只匹配字母“a”被重复两次的行(其实说的再具体一点,"\<a\{2\}\>"其实限定了三个条件,位于行首,且位于行尾,且字母“a”只重复两次,自己动手看看是不是这个道理)。

    相关文章

      网友评论

        本文标题:【Linux操作】---正则表达式学习笔记(二)

        本文链接:https://www.haomeiwen.com/subject/qzzgnhtx.html