?
通配符、正則表達式使用場合:
通配符:一般是用于命令行腳本等bash環(huán)境(df、cut、sort、uniq、tr等)
linux正則表達式:常用于三劍客場景(grep、awk、sed)
?
通配符
常見通配符
* - 代表所有(0到多個)字符 ? - 代表任意一個字符 [0-9] - 匹配0-9之間的單個數(shù)字 [abc] - 匹配這三個字符中的任意一個字符 ; - 兩個命令之間的分隔符 # - 在配置文件里,注釋效果 | - 管道文件 ~ - 當(dāng)前用戶的家目錄 - - 上一次的所在目錄 $ - 變量前需要加的符號 / - 路徑分隔符,也是根 >或1> - 輸出重定向,覆蓋原有數(shù)據(jù) >> - 追加輸出重定向,追加在文件內(nèi)容的尾部 < - 輸入重定向(xargs,tr) << - 追加輸入重定向(cat) ' - 單引號,不具備變量置換功能,引號內(nèi)所見即所得 " - 雙引號,具備變量置換功能,解析變量后輸出,不加引號相當(dāng)于雙引號 ` - 反引號,兩個``中間為命令,會先執(zhí)行,等價$() {} - 中間為命令去、區(qū)塊組合或內(nèi)容系列 [] - 中間為字元組合 () - 在中間為子shell的起始與結(jié)束 ! - 邏輯運算中的“非”(not) && - and并且,當(dāng)前一個指令執(zhí)行成功時,執(zhí)行后一個指令 || - or或者,當(dāng)前一個指令執(zhí)行失敗時,執(zhí)行后一個指令 .. - 代表上級目錄 . - 代表當(dāng)前目錄
?
?正則表達式
?
分類:基本正則表達式BRE;擴展正則表達式ERE(需要grep -E,sed -r,awk好像沒擴展正則)
元字符分類:字符匹配、匹配次數(shù)、位置錨定、分組。
?
匹配次數(shù)
基礎(chǔ)正則: * :匹配前面的字符任意次,最少一次。且是貪婪模式,盡可能的長匹配。 .* :匹配任意長度的字符。 ? :匹配其前面的字符0次或1次。 + :匹配其前面的字符最少1次。 {4} :匹配前面的字符4次。 {m,n} :匹配前面的字符最少m次,最多n次。 擴展正則: * :匹配前面一個字符任意次。 ? : 匹配其前面的一個字符0次或1次。 + :匹配其前面的一個字符最少1次。 {8} :匹配前面的一個字符8次。 {m,n} :匹配前面的一個字符最少m次,最多n次。 練習(xí): 1{4} - 表示匹配字符 "1" 重復(fù)4次 1{5,} - 表示匹配字符 "1" 重復(fù)4次或4次以上 a{,8} - 表示匹配字符 "a" 重復(fù)8次或8次以內(nèi) d1{3,5} - 表示匹配字符 "1" 重復(fù)3-5次
?
字符匹配
基礎(chǔ)正則表達式:
. :匹配任意單個字符。 [] :匹配指定范圍內(nèi)的任意單個字符。 [-] :表示匹配"[-]"里一段字符的任意單個字符,如[0-9]即0到9。 [^] :匹配指定范圍外的任意單個字符。 [[:alnum:]] :匹配字符和數(shù)字。 [[:alpha:]] :匹配a-z,A-Z。 [[:lower:]] :匹配小寫字母。 [[:upper:]] :匹配大寫字母。 [[:blank:]] :匹配空白字符(即空格和制表符)。 [[:digit:]] :匹配十進制數(shù)字。 [[:xdigit:]] :匹配十六進制數(shù)字。
?
位置錨定(定位出現(xiàn)的位置)
基礎(chǔ)正則表達式: ^ :行首錨定,用于模式最左側(cè)。 $ :行尾錨定,用于模式最右側(cè)。 ^PATTERN$ :用于匹配整行。 ^$ :匹配空白行。 ^[[:space:]]$ :匹配空白行。 <或 :詞首錨定,用于單詞最左側(cè)。 >或 :詞尾錨定,用于單詞最右側(cè)。
練習(xí):
<PATTERN> :匹配單詞"PATTERN"。
PATTERN ?。浩ヅ鋯卧~"PATTERN"。
# cat test.sh |grep? "look" ,# cat test.sh |grep "<look>" ?。浩ヅ浒?look"單詞的行。
?
分組(一般sed用的多,用于文本替換)
() :將一個或多個字符捆綁在一起,當(dāng)做一個整體進行處理。 : 表示從左側(cè)起第n個括號以及與之匹配右括號之間的模式所匹配到的字符。 | :表示或 擴展正則表達式: () :將一個或多個字符捆綁在一起,當(dāng)做一個整體進行處理。 | : 表示或 練習(xí): 基礎(chǔ) (string+(string2)*) :其中1代表string+(string2)*,2代表string2。 擴展 (string+(string2)*) :其中1代表string+(string2)*,2代表string2。
()().*() :其中1表示第一個()內(nèi)容,2表示第二個()內(nèi)容,以此類推....
a|b :表示a或b。 a|b :表示a或b; (C|c)at :表示Cat或cat。 (C|c)at :表示Cat或cat;
?
?
?
?
本文摘自 :https://www.cnblogs.com/