Shell程式設計基礎學習之一:正規表示式

趙明威發表於2014-09-14

一、入門基礎

學習shell不得不學的就是正規表示式

下面來熟悉一下正規表示式基礎

正規表示式入門:

1、一些量詞和

^ 行起始標記
$ 行尾標記
. 匹配任意一個字元
[] 匹配[字元]中任意一個
[^] 匹配除[^字元]中任意一個
[-] 匹配[] 中指定範圍內的任意一個字元
? 匹配之前的項1次或者0次
+ 匹配之前的項1次或者多次
* 匹配之前的項0次或者多次
() 建立一個用於匹配的子串
{n} 匹配之前項n次
{n,}匹配之前項至少n次
{n,m}
|   交替---匹配 | 兩個的任意一項
\   轉義字元可以將上面介紹的特殊字元進行轉義

2、一些字元

摘自鳥哥私房菜
 特殊符號 代表意義 
[:alnum:] 代表英文大小寫位元組及數字,亦即 0-9, A-Z, a-z 
[:alpha:] 代表任何英文大小寫位元組,亦即 A-Z, a-z 
[:blank:] 代表空白鍵與 [Tab] 按鍵兩者 
[:cntrl:] 代表鍵盤上面的控制按鍵,亦即包括 CR, LF, Tab, Del.. 等等 
[:digit:] 代表數字而已,亦即 0-9 
[:graph:] 除了空白位元組 (空白鍵與 [Tab] 按鍵) 外的其他所有按鍵 
[:lower:] 代表小寫位元組,亦即 a-z 
[:print:] 代表任何可以被列印出來的位元組 
[:punct:] 代表標點符號 (punctuation symbol),亦即:" ' ? ! ; : # $... 
[:upper:] 代表大寫位元組,亦即 A-Z 
[:space:] 任何會產生空白的位元組,包括空白鍵, [Tab], CR 等等 
[:xdigit:] 代表 16 進位的數字型別,因此包括: 0-9, A-F, a-f 的數字與位元組 

3、grep 正規表示式

grep 正規表示式,grep 用來過濾無用的,顯示查詢的內容,

[hadoop@hadoop scripts]$ dmesg |grep 'eth'
eth0: registered as PCnet/PCI II 79C970A
eth1: registered as PCnet/PCI II 79C970A
eth1: link up
eth0: link up
eth0: IPv6 duplicate address fe80::20c:29ff:fe9b:291a detected!
eth1: no IPv6 routers present

例如有一個檔案叫做filename201408221 ,

想搜尋帶有兩個o的字串,如下程式碼

[hadoop@hadoop scripts]$ grep -n 'o\{2\}' filename201408221 
7:good google
8:mood 
10:00 oo

最近申請了微信公眾號,希望大家來看看,專門為程式設計師而生,做最好的程式設計

高斯程式設計

相關文章