乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      bash腳本_正則表達(dá)式

       WUCANADA 2014-02-14

      bash腳本_正則表達(dá)式

      (2013-06-04 14:30:13)
      標(biāo)簽:

      bash

      linux

      正則表達(dá)式

      shell

      分類: linux
       
      摘要:
      1、正則元字符
      2、[0-9]\{3\}-[0-9]\{2\}-[0-9]\{4\}    3個數(shù)字-2個數(shù)字-4個數(shù)字
      3、ab(oratorie)?s       匹配labs或者laboratories,可以用于全稱或者縮寫的匹配
      4、egrep "(^| )[\"[{(]*book[\"]})?!.;:'s]*( |$)"  bookwords           文本中搜索book,允許帶有復(fù)數(shù),但是不包括其他單詞
      5、"[^"]*"                  匹配最短的""內(nèi)容
      6、sed 's/\([0-9][0-9]*\)\.\{5,\}\([0-9][0-9]*\)\/\1-\2/'  sample              將兩個數(shù)字中間超過5個點換成-


      1、概述
          在bash執(zhí)行環(huán)境中,我們講到了通配符的用法。這里要注意的是,正則表達(dá)式與shell腳本內(nèi)置的通配符不同,shell通配符主要用于對文件名展開, 因此是很簡單的一種正則;而這里要講解的正則表達(dá)式在grep,sed,awk等工具中經(jīng)常用到,可以做非常強(qiáng)大的匹配操作。想要系統(tǒng)了解正則表達(dá)式的同 學(xué),建議學(xué)習(xí)《sed與awk》的第三章。


      2、元字符
         一個正則表達(dá)式包括了普通字符集和元字符,元字符又包括錨(比如表示開頭和結(jié)尾)和修飾符(用于擴(kuò)展或縮小匹配范圍)。元字符列舉如下:
      星號        -- * -- 匹配前一個字符的任意多次(包括零次).
                  "1133*"匹配11 + 一個或更多的3 + 可能的其他字符: 113, 1133, 111312, 等等.

      點            -- . -- 匹配除了新行符之外的任意一個字符. [1]
                  "13." 匹配13 + 至少一個任意字符(包括空格): 1133, 11333, 但不匹配 13(因為少了附加的至少一個任意字符).

      脫字符        -- ^ -- 匹配一行的開頭,但依賴于上下文環(huán)境,可能在正則表達(dá)式中表示否定
                  一個字符集的意思.

      美元符        -- $ -- 在正則表達(dá)式中匹配行尾.
                  "^$" 匹配空行.

      方括號        -- [...] -- 在正則表達(dá)式中表示匹配括號中的一個字符.
                  "[xyz]" 匹配字符x, y, 或z.
                  "[c-n]" 匹配從字符c到n之間的任意一個字符.
                  "[B-Pk-y]" 匹配從B到P 或從k到y(tǒng)的任意一個字符.
                  "[a-z0-9]" 匹配任意小寫字母或數(shù)字.
                  "[^b-d]" 匹配除了從b到d范圍內(nèi)所有的字符. 這是正則表達(dá)式中反轉(zhuǎn)意思或取否的一 個例子.(就好像在別的情形中!字符所扮演的角色).

                  多個方括號字符集組合使用可以匹配一般的單詞和數(shù)字模式."[Yy][Ee][Ss]" 匹配yes, Yes, YES, yEs, 等等.
                  "[0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9][0-9][0-9]"匹配社會安全碼(Social Security number).

      反斜杠字符    -- \ -- 轉(zhuǎn)義(escapes) 一個特殊的字符,使這個字符表示原來字面上的意思.
                  "\$"表示了原來的字面意思"$",而不是在正則表達(dá)式中表達(dá)的匹配行尾的意思.同樣,"\\"也被解釋成了字面上的意思"\".

      轉(zhuǎn)義(escape)"尖角號"    -- \<...\> -- 用于表示單詞的邊界.
                              尖角號必須被轉(zhuǎn)義,因為不這樣做的話它們就表示單純的字面意思而已.
                              "\" 匹配單詞"the",但不匹配"them", "there", "other",等等.

         以上都是基本的元字符,還有一些擴(kuò)展的元字符,在egrep,awk等工具中使用。
      問號        -- ? -- 匹配零或一個前面的字符. 它一般用于匹配單個字符.

      加號        -- + -- 匹配一個或多個前面的字符.它的作用和*很相似,但唯一的區(qū)別是它不匹配零個字符的情況.

                 1 # GNU 版本的 sed 和 awk 可以使用"+",
                 2 # 但它應(yīng)該轉(zhuǎn)義一下.
                 3
                 4 echo a111b | sed -ne '/a1\+b/p'
                 5 echo a111b | grep 'a1\+b'
                 6 echo a111b | gawk '/a1+b/'
                 7 # 上面三句都是等價的效果.
                 8
                 9 # 多謝, S.C.

      轉(zhuǎn)義"大括號"    -- \{ \} -- 指示前面正則表達(dá)式匹配的次數(shù).
                      要轉(zhuǎn)義是因為不轉(zhuǎn)義的話大括號只是表示他們字面上的意思.這個用法只是技巧上的而不是基本正則表達(dá)式的內(nèi)容.

                      "[0-9]\{5\}" 精確匹配5個數(shù)字 (從 0 到 9的數(shù)字).
                      注意:    大括號不能在“經(jīng)典”(不是POSIX兼容)的正則表達(dá)式版本的awk中使用. 然而, gawk 有一個選項--re-interval來允許使用大括號(不必轉(zhuǎn)義).
                      bash$ echo 2222 | gawk --re-interval '/2{3}/'
                               2222
                      Perl和一些egrep版本不要求轉(zhuǎn)義大括號.

      圓括號        -- ( ) -- 括起一組正則表達(dá)式. 它和下面要講的"|"操作符或在用expr進(jìn)行子字符串提取(substring extraction)一起使用很有用.

      豎線        -- | -- "或"正則操作符用于匹配一組可選的字符.
                   bash$ egrep 're(a|e)d' misc.txt
                   People who read seem to be better informed than those who do not.
                   The clarinet produces sound by the vibration of its reed.

         還有一類POSIX字符類.    [:class:]   是另一種用于指定匹配字符范圍的方法.
      [:alnum:]    匹配字母和數(shù)字.等同于A-Za-z0-9.
      [:alpha:]    匹配字母. 等同于A-Za-z.
      [:blank:]    匹配一個空格或是一個制表符(tab).
      [:cntrl:]    匹配控制字符.
      [:digit:]    匹配(十進(jìn)制)數(shù)字. 等同于0-9.
      [:graph:]    (可打印的圖形字符). 匹配 ASCII 碼值的33 - 126之間的字符. 這和下面提到的[:print:]一樣,但是不包括空格字符.
      [:lower:]    匹配小寫字母. 等同于a-z.
      [:print:]    (可打印字符). 匹配 ASCII碼值 32 - 126之間的字符. 這和上面提到的[:graph:]一樣,但是增多一個空格字符.
      [:space:]    匹配空白字符 (空格符和水平制表符).
      [:upper:]    匹配大寫字母. 等同于A-Z.
      [:xdigit:]    匹配十六進(jìn)制數(shù)字. 等同于0-9A-Fa-f.

      注意:    POSIX字符類一般都要求用引號或是雙方括號double brackets ([[ ]])引起來.
               bash$ grep [[:digit:]] test.file
               abc=723

              這些字符類在一個受限的范圍內(nèi)甚至可能用在shell通配(globbing)中.
               bash$ ls -l ?[[:digit:]][[:digit:]]?
               -rw-rw-r--    1 bozo  bozo         0 Aug 21 14:47 a33b


      3、正則表達(dá)式舉例
      chapter.                  匹配chapter后面跟任意字符,不包括chapter出現(xiàn)在行尾。
      [Ww]hat                 匹配What和what,也匹配somewhat
      \.H[12345]              匹配.H1 , .H2 , .H3 , .H4 , .H5
      [cC]hapter [1-9]      匹配chapter 9 , Chapter 1
      [A-Za-z][.?!]            任意字母后跟.?!
      [0-1][0-9][-/][0-3][0-9][-/][0-9][0-9]              MM-DD-YY或MM/DD/YY
      \.DS "[^1]"             避免匹配.DS"1"
      "*hyper"*               不論是否有"",hyper都被匹配
      .*                          匹配所有
      <.*>                     匹配帶<>
      can[no']*t              匹配can't , can not ,cannot , cant等
      80[234]?86             匹配8086 , 80286 , 80386 ,80486
      ^$                         匹配空行
      ^.*$                      匹配所有行
      11*0                      匹配10 , 110, 1111110等
      [0-9]\{3\}-[0-9]\{2\}-[0-9]\{4\}    3個數(shù)字-2個數(shù)字-4個數(shù)字
      UNIX|LINUX           匹配UNIX或LINUX
      lab(oratorie)?s       匹配labs或者laboratories,可以用于全稱或者縮寫的匹配
      egrep "(^| )[\"[{(]*book[\"]})?!.;:'s]*( |$)"  bookwords           文本中搜索book,允許帶有復(fù)數(shù),但是不包括其他單詞
      A.*Z                     匹配最長情況
      "[^"]*"                  匹配最短的""內(nèi)容
      sed 's/\([0-9][0-9]*\)\.\{5,\}\([0-9][0-9]*\)\/\1-\2/'  sample              將兩個數(shù)字中間超過5個點換成-

        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多