輕鬆上手Regex與grep,sed,awk(一)

來源:互聯網
上載者:User

輕鬆上手Regex與grep,sed,awk(一)

一些廢話:

對於Regex,一直都是似懂非懂,看到一些代碼,指令碼中帶有正則,awk,sed,心裡總有點虛。主要是記不住,平時又沒怎麼用,也就沒總結了。現在有空,決定總結一下,順便克服一下看到shell,js這些帶有正則就心虛的弱點。打算分三篇文章來寫

本文:

一般來說,正則分好幾種,但基本都差不多,我所瞭解的有 “基本正則”,“擴充正則“及”perl正則”,本文更偏向說記錄“基本正則”和“擴充正則”,它們在grep,egrep,sed,awk中發揮著重要發作用。

開始正則前,先複習一下grep的一些常用參數:

-n ,顯示行號,-v, 反向選擇-i,忽略大小寫
下面來始抄書了,參考《鳥哥的Linux私房菜.基礎學習篇 》,先下載我們要用的文本:

http://linux.vbird.org/linux_basic/0330regularex/regular_express.txt

內容如下:

先來學習”基本Regex“ 

1.直接匹配

例1.分別找出含apple和is 的文本

這應該是最簡單的使用正則了 

2.方括弧[]

[]主要是進行集合方面的匹配,用法我們還是用例子說明

例2匹配含有test,tast的文本

可以看出,[]就是從集合[ae]中選出一個一個來匹配 

3.方括弧[]與中橫線-結合

對於想匹配含有一個數位文本,我們可以寫成[0123456789],但這樣難免太麻煩,這就需要中橫線了對於數字,可以寫成[0-9], 同樣,對於字母也可以應用上來,大寫字母[A-Z],小寫字母[a-z],也可以合在一塊,如大小寫字母[a-zA-Z].

例3,找出含有數位文本

4.方括弧[] ,-,^,三者結合

在[]中出現^表示取反,舉例說明

例4.取出帶有oo,但oo前不含g的文本

最後一個”19:goooooogle yes!”為什麼會匹配上呢?雖然前面是goo,明顯不滿足,但是, go(oo)oogle,是滿足的,所以匹配上了。這也許就是正則的痛點之一,你寫出的正則或許存在bug,但你還沒發現。

例5, 匹配帶有oo,的文本,但oo前不含小寫字母

看到了吧,這就是[],-,^共同使用,注意:^在[]內才表示取反。 

5.^與$

這裡又出現了^,但與上面的不一樣,這裡的^表示行首,相應的$就表示行尾。

例6 取出以the 開頭的文本

例7 取出以數字或字母結尾的文本

例8取出空行

空行用’^$’進行匹配 

6.點號. 與星號*

點號.表示有且僅有一個任一字元

星號表示重複前一個0個或多個字元

例9匹配形如g??d的字串(gd之間有兩個字元)

如結果所示,點號.是表示一個任一字元。

例10 匹配至少連續兩個o以上的字元。

注意到這裡,”*”的意義與我們所認識的萬用字元*是不一樣的。

例11匹配g開頭g結尾的文本

用’g*g’ 是不行的,因為*和萬用字元是不一樣,正確的是’g.*g’

所以,記住,Regex的*和萬用字元的 *不一樣!

7.轉義\

如果我們想匹配的文本正好是代表一些特殊字元(《鳥哥的linux私房菜》中說是在shell中有特殊函義,我認為是不正確的,或者說讓人誤解,只是 shell中的嗎?比如他舉的例子點號,在shell中代表的是本目錄吧?其實真正的原因是.是正則表達字元吧?),該如何?轉義!

如匹配以點號 . 結尾的文本,我們知道.在Regex中表示匹配且僅匹配任意一個字元,所以可以用’\.$’

今天就先寫到基本的Regex吧。

參考資料:

《鳥哥的Linux私房菜》

《Linux程式設計》

http://www.ibm.com/developerworks/cn/education/aix/au-unixtips3/

http://www.cnblogs.com/chengmo/archive/2010/10/10/1847287.html

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.