使用方便 Regexgrep,sed,awk(一)

來源:互聯網
上載者:User

標籤:

一些無稽之談:

對於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

 內容例如以下:


先來學習”基本正則表達式“



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’

所以,記住,正則表達式的*和萬用字元的 *不一樣!

 


7.轉義\

假設我們想匹配的文本正好是代表一些特殊字元(《鳥哥的linux私房菜》中說是在shell中有特殊函義,我覺得是不對的,或者說讓人誤解,僅僅是 shell中的嗎?比方他舉的範例點號,在shell中代表的是本檔案夾吧?事實上真正的原因是.是正則表達字元吧?),該怎樣?轉義。

如匹配以點號 . 結尾的文本。我們知道.在正則表達式中表示匹配且僅匹配隨意一個字元,所以能夠用’\.$’


 

今天就先寫到主要的正則表達式吧。


參考資料:

《鳥哥的Linux私房菜》

《Linux程式設計》

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

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

 

著作權聲明:本文博主原創文章,部落格,未經同意不得轉載。

使用方便 Regexgrep,sed,awk(一)

聯繫我們

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