zoukankan      html  css  js  c++  java
  • Shell正则表达式

    shell函数(使脚本看起来更加简洁)

    传参就用$1

    定义函数格式:

    第一种格式:

    fuction 定义的函数名 {
    
        命令
    
    }

    第二种格式:

    定义的函数名() {
    
        命令
    
    }

    fuction ()可以省略,但二者必有其一。

    引用函数直接输入函数名就可以引用。

    fuction 定义的函数名 {
    
    命令
    
    return 2
    
    }

    正则表达式(匹配的时候加" ")

    正则是做什么用的,就是匹配要符合你预期要求的字符串。

    通配符与正则的区别

    awk grep sed egrep使用的都是正则

    find使用的都是通配符

    最容易理解的区别:当你对文件名目录名使用字符时,使用的是通配符,当你对文件里的内容使用字符时,使用的是正则

    基础正则

    匹配任意单个字符(必须存在)

    . 

    比如l..e匹配到的是 like lone life

    但不会匹配到 le ledoasdo lee 因为.代表单个,l..e有两个点,并且这两个字符必须存在,不能为空。

    匹配开头

    ^ 

    比如 ^ok匹配到的就是会以ok为开头的行,如果其他行有ok这两个字符,是在行首会被匹配到,不在一行之中的行首,哪怕是ok,也不会被匹配到。

    匹配结尾

    $ 

    比如 ok$匹配到的就是会以ok为结尾的行,如果其他行有ok这两个字符,是在结尾会被匹配到,不在一行之中的结尾,哪怕是ok,也不会被匹配到。

    匹配前一个字符的0个或多个

    * 

    比如 a*b 匹配到的就会是以b结尾的并且含有a的内容。*前面必须要有字符串。

    匹配任意长度任意字符

    .* 

    比如.*b 匹配到的就会是以b结尾的任意内容,.*代表任意长度的字符串或字符。

    匹配到[]里的所有字符,会把中括号里的所有字符以单个形式匹配出来

    [] 

    比如 [root] 匹配的是只要有r、o、o、t里的任意一个字符都可以匹配到。(跟通配符里的*一个作用)。

    匹配取反,除了中括号里的内容都能匹配到

    [^] 

    比如 [^abc]匹配到的内容不会有a、b、c这三个字符,注意是三个字符包括三个字符组合成的字符串。

    匹配取反的行首,就是把匹配到的字符,并且此字符是在行首,不显示。

    ^[^] 

    比如^[^r] 匹配到的含有r这个字符,并且行首是以r开头的行不显示。

    匹配花括号前面字符至少n个字符

    n{}

    比如o{2} 匹配到的就是含有o这个字符,并且最少含有2个o的内容。

    匹配花括号前面字符至少n个字符,至多m个字符

    {n,m}

    比如 o{1,3} 匹配到的就是含有o这个字符,并且最少含有1个o,最多含有3个o的内容。

    锚定单词首部

    <

    比如<root>匹配到的内容就是 root,nloghiroot里的不会被匹配到,这种规定了你匹配的内容前后可以有特殊字符串,可以有空格,但不能是一长串单词中含有这个匹配的内容。

    锚定单词尾部

    >

    分组1调用   ()1 结合使用 调用店面的第一个分组

    ()

    比如(root).*1 匹配到的就是一行之中含有两个root。

    拓展正则

    要想支持拓展正则,必须使用

    egrep或者grep –E

    表示其前面字符至少出现一次情况

    + 

    比如 #  + 匹配到的就是含有#和空格的内容,至于有多少空格无所谓,但至少有#  。

    表示前面的字符出现最多一次的情况,可以是0个

    ?  

    比如 a?b 匹配到的可以是ab、b、abbbbb、bbbb

    表示匹配竖杠两旁的任意一个

    | 

    比如 cat|Cat 匹配到的是cat还有Cat

    也可以 (c|C)at 匹配到的也是cat还有Cat,可以做分组,但不调用。
  • 相关阅读:
    20145231第九周学习笔记
    20145231第八周学习笔记
    20145231《Java程序设计》第三次实验报告
    20145231第七周学习笔记
    20145231《Java程序设计》第二次实验报告
    测试「20200912测试总结」
    题解「Luogu4774 [NOI2018]屠龙勇士」
    总结「斯坦纳树」
    题解「AT1226 電圧」
    题解「AT1983 [AGC001E] BBQ Hard」
  • 原文地址:https://www.cnblogs.com/shuaiyin/p/10917135.html
Copyright © 2011-2022 走看看