Shell正则表达式

2019-05-24 06:10:51来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

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,可以做分组,但不调用。


原文链接:https://www.cnblogs.com/shuaiyin/p/10917135.html
如有疑问请与原作者联系

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:postgres主从配置

下一篇:lvs简介