shell腳本學習筆記之正則表達式

***基本正則表達式(可支持grep,sed,awk等shell工具)


* 0個或多個在*字符前面的那個普通字符
. 匹配任意字符
^ 匹配行首,或後面字符是非
$ 匹配行尾


[]匹配字符集合
\ 轉義符,屏蔽一個元字符的特殊意義
\<\>  精確匹配符號
\{n\} 匹配前面字符出現n次
\{n,\} 匹配前面字符至少出現n次
\{n,m\} 匹配前面字符出現n~m次


注意:符號*前面必須至少有兩個字符(當符號*後面沒有字符時)或必須*前面至少有一個字符(當符號*後面至少有一個字符時)纔有意義
      符號.前後必須同時有字符纔有意義
    []使用時前面


1.符號*    0個或多個在*字符前面的那個普通字符
  例子  hel*o
   hel*o  可以是heo,helo,hello,helllo可以可以出現0到無窮次


2.字符 .   匹配任意字符
  例子  .7
   .7 首先這是兩個字符,其中後面一個字符是7,而前面一個字符是任意一個鍵盤上可以輸出的字符
  ...7  這是4個字符,最後一個還是7,前面3個字符是任意一個鍵盤上可以輸出的字符


綜合
  hel*o.  這個表示heo後面任意一個字符
                  helo後面任意一個字符
                  hello後面任意一個字符


  hel.*o  這個就表示以hel開頭,o結尾的任意字符都可以匹配


3.符號^    匹配行首,或後面字符是非
  例子  ^cloud
   ^cloud  這個表示行首的字符是cloud的行都會被匹配



綜合
  ^h.*o  表示必須以行首h開頭以o結尾中間任意字符


4.符號$  匹配行尾
   例子 hel$   表示必須以hel作爲行尾
  
  綜合 ^h.*o$   表示以h爲行首以o爲行尾中間任意字符
       ^$      表示爲空
      ^hjo$    表示行首位h,行尾爲o中間爲j進行匹配,也就是說這                一個只有hjo纔會被匹配


5.符號[]  匹配字符集合
  例子1.窮舉
   [123456789]  表示匹配任意一個數字
  
  例子2.-的使用(範圍)
   [1-9]   表示匹配任意一個數字
   [a-z]    匹配任意一個小寫字母
   [A-Z]    匹配任意一個大寫字母


   [^] 
   ^在[]裏表示取反
   例子[^b-d]  表示匹配不在b到d之間的所有字符
  
綜合
   [A-Za-z] [A-Za-Z]*  匹配所有的英文單詞
   [A-Za-z1-9] [A-Za-z1-9]* 匹配所有的英文單詞和數字


6.符號\      轉義符,屏蔽一個元字符的特殊意義
  \* 匹配*字符,


7.符號\<\>   精確匹配符號
     屏蔽<>
  例子\<the\>  匹配the單詞而不是含有the的單詞或行


8.\{\}系列符號    匹配前面字符重複出現的次數
   \{n\}           匹配前面字符出現n次
   例子
    a\{4\}   匹配aaaa


   \{n,\}       匹配前面字符至少出現n次
  例子
    a\{2,\}  匹配aa,aaa,aaaa ......


   \{n,m\}   匹配前面字符出現n~m次
    a{2,4\}  匹配aa,aaa,aaaa


綜合
[a-z]\{5\}   匹配5個小寫字母


++++++++++++++++++++++++++++++++++++++++++++++++++++++++


擴展正則表達式(支持awk,perl等工具)
? 匹配0個或1個在其之前的那個普通字符
+ 匹配1個或多個在其之前的那個普通字符
() 表示一個字符集合或用在表達式中
|  表示“或”,匹配一組可選的字符


1.符號?
  例子
  jo?b   匹配job joob


2.符號+
  例子 
  s+eu   匹配sseu ssseu......


3.符號() 和符號|      表示一組可選字符的集合
 例子
 re(a|e|o)d  匹配 read reed reod


4.符號|
  re1|re2|re3...



 +++++++++++++++++++++++++++++++++++++++++++++++


通配(支持bash shell)
 符號*  表示任意位的任意字符
 符號? 表示一個任意字符
 符號^  表示取反
 符號[] 表示字符集合
 符號[^] 表示取反字符集合
 符號{}  表示一組表達式的集合


1.符號*
  例子 ls a*   查看所有以a開頭的文件


2.符號?
  例子
  ls a?  查看以a開頭的包含2個字符的文件


3.符號[]
  例子
  ls a[1-10] 查看a1.a2...a10
  ls a[a-z]* 查看以a開頭的含有小寫字母的文件
 
4.符號[^]
  例子
  ls a[^1-2]  查看不含有a1,a2的所有文件


5.符號{}
  例子
  ls a{[^1-2],a?,b*} 查看不包含a1,a2,的所有文件
                      或查看文件a和aa,或查看所有以b開頭的文件
 




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章