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,可以做分组,但不调用。
原文地址:https://www.cnblogs.com/shuaiyin/p/10917135.html