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