1. 程式人生 > >shell腳本學習筆記 (正則表達式)

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

時也 限定符 數量 介紹 是我 center sof 好的 fgrep

正則表達式一般有三個部分組成,他們各自是:字符類數量限定符位置限定符。

規定一些特殊語法表示字符類、數

量限定符和位置關系,然後用這些特殊語法和普通字符一起表示一個模式,這就是正則表達式(Regular Expression)。

我們以一

個樣例開始吧。假如給你一個文件,裏面存放的是IP地址,可是有一些不是合格的。請你找出合格的IP地址。我想不知道正

則表達式的人一定會認為好陌生,我拿一個循環去實現,我之前也被問到過這個問題,也是想著拿循環來完畢。寫出一個函

數來實現這個查找功能實在是不簡單。並且不能保證正確性。

這時候正是正則表達式登場的時候了。以下是我寫的一個正則

表達式:

技術分享

此時此刻是不是認為挺奇妙的。我當時也感覺到了,上面的五個“IP”地址中。僅僅有一個滿足要求的,我們一條

命令就找出來了,是不是頓時被吸引住了。那麽我們開始正則表達式的探討吧。

1.字符類:

它們在模式中表示一個字符,可是取值範圍是一類字符中的隨意一個。

常見的字符類例如以下:

技術分享

我寫了一些簡單的代碼來驗證上述字符類

技術分享

技術分享


2.數量限定符

數量限定符指明字符類出現的次數,以幫助模式匹配,常見的數量限定符例如以下:

技術分享

我寫的測試代碼例如以下:

技術分享

我的使用的是centos,不知道細心的你發現沒有。有一條語法不支持即:{ ,M}。

Z這個在別的linux上是能夠的。

比方ubantu,我想這個問題應該是不同平臺的差異導致的吧。

我在同學的ubantu平臺下測試了是能夠的,這點能夠保證。


3.位置限定符

顧名思義位置限定符使用限定字符類的位置的。比方我們還是拿IP地址來說吧。IP地址分為四個部分。每兩個部分之間

拿 ‘.‘ 隔開,而每一部分都能夠拿字符類和數量限定符描寫敘述。

技術分享

技術分享

技術分享

特殊字符:

1. \ 該字符用於轉移,上面的樣例中使用到 ‘.‘ 的時候都要用 ‘\‘ 轉移一下,否則無法被解釋

2. | ‘|‘ 可用於連接兩個 字表達式

3. () ‘()‘可將莫一部分作為一個總體,然後我們能夠對總體進行操作

技術分享

技術分享

到這裏正則表達的語法基本上講完了,以下對以上事例中使用到的工具進行簡單的介紹,grep工具相信大家都知道

吧,linux平臺下的自帶的工具,對grep的介紹我引用搜狗百科的介紹:grep是一種強大的文本搜索工具。它能使用正

則表達式搜索文本,並把匹配的行打印出來。Unix的grep家族包含grep、egrep和fgrep

利用這些返回值就可進行一

些自己主動化的文本處理工作。 我在上面的樣例中使用的是egrep工具。是grep的擴展,這個工具的很多其它使用方法以及上面介紹

的一些不充分的地方大家能夠去百科上查找一下,事實上另一些更高級的工具也是支持這則表達式的。我將在結下來的

博客中再介紹。

我個人認為死記這些這些字符的意思是不恰當的。我們應該通過不斷的練習來學習正則表達式,這樣才幹達到好的效

果。忘記的時候我們能夠去看一看這些正則表達式的模塊的用處,最後希望對大家有一些幫助。

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