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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM