Shell 中的 Regex

來源:互聯網
上載者:User

標籤:shell   Regex   sed   

    常接觸shell指令碼語言的,經常會看到一個shell命令接一堆亂七八糟的option,類似這樣的 sed -e "s/^[^\-]*-//"  ,雖然知道那肯定是一個邏輯條件組合,但是如果不是熟悉Regex的人,絕對看的眼花.

這裡學習記錄一下Regex的一些基本用法.


                                                 撰寫不易,轉載需註明出處:http://blog.csdn.net/jscese/article/details/41645025#t7

概念:

 Regex也叫正規標記法,就是處理字串的方法,他是以行為單位進行字串癿處理行為, 正則標記法透過一些特殊符號的輔助,

可以讓使用者輕易的達到  搜尋  刪除  取代』某特定字串的處理常式!



使用:

grep 摘取命令為例

搜尋特定字串:

 grep -n  ‘jscese’ test.txt

以單引號包含需要搜尋的字串,

單雙引號的區別在於,單引號裡面的內容全當字元處理,如果裡面是其它變數名,也只當作一般字元,二雙引號就不同,具有引用特性



利用中括弧 [] 搜尋集合字元:

grep -n  'j[sc]ese'  test.txt

中括弧代表一個字元, 所以上面的語句代表會 搜尋 j sese  j cese 這兩種組合可能.




取反“ ^ ”:
grep  -n  ‘j[^s]cese'  test.txt   //取中間不是 s 的grep  -n  'j[^a-zA-Z0-9]cese  test.txt     //取中間不是a-z A-Z 0-9 的,只有是特殊符號的才行了grep  -n  '^jscese'   test.txt      //代表開頭 ,取以jscese開頭的行


使用 ^  在中括弧[] 裡面和外面代表的意義是不一樣的,在 裡面代表取反,在 外面代表行首




行尾 " $ ":

grep   -v  '^$'   test.txt    //取非空的行

行首^直接加行尾$,代表空的一行,-v 就是取非匹配的




任意一個字元 " . " 與重複字元 " * ":
grep   -n    'j....e'   test.txt   // 其中每個  .  代表任意的一個字元grep   -n    ‘j*’  test.txt   // 這個會列出所有的 ,因為 * 代表重複前面的字元 0 次 或者 無數 次, 也就是可能是空

修飾前一個字元



限定連續 字元範圍 {}:

grep  -n   ‘js\{2,\}'   test.txt        // {} 需要跳脫字元轉義 所以在前面加上 \

也是修飾前一個字元的,這裡代表找以 js開頭後面緊接著 2個以上 s 的一行,\{2,6\} 就代表2到6個之間的都符合



基本的規則就是上面的這些了,詳細的可以去看鳥哥的私房菜,現在來看看開頭的 sed -e "s/^[^\-]*-//"

這個是在envsetup,sh 中用來取源碼編譯類型的,lunch選取的值為 selection= full_x86-eng 的樣式

通過:

local variant=$(echo -n $selection | sed -e "s/^[^\-]*-//")

可以看到 通過sed命令直接進行編輯,利用sed的 s 取代動作,後面的模式為:

“s/要被取代的部分/取代的字串/“

可以看到  要被取代的部分為 :  ^[^\-]*-   這代表從頭開始,0個或者多個 非 - 的字元然後以 - 字元結尾的部分, 因為在[]中 - 具有範圍的意義,所以加了跳脫字元 \

取代部分這裡是空的

所以最後實際上是把   full-x86- 給剔除掉了,餘下eng 賦值給 variant ,這就是工程機的編譯模式.


到這裡Regex的入門基本算是完成了,後面有機會分析sed 以及awk 的一些進階用法~





Shell 中的 Regex

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.