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