當(dāng)前位置:首頁 > IT技術(shù) > 系統(tǒng)服務(wù) > 正文

Linux常用通配符及正則表達(dá)式
2021-10-28 15:21:05

?

通配符、正則表達(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/

開通會(huì)員,享受整站包年服務(wù)立即開通 >