shell指令碼學習筆記 (正規表示式)

2021-09-07 13:20:03 字數 2361 閱讀 7789

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

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

量限定符和位置關係,然後用這些特殊語法和普通字元一起表示乙個模式,這就是正規表示式(regular expression)。

我們以一

個樣例開始吧。假如給你乙個檔案,裡面存放的是ip位址,可是有一些不是合格的。請你找出合格的ip位址。我想不知道正

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

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

這時候正是正規表示式登場的時候了。以下是我寫的乙個正則

表示式:

此時此刻是不是認為挺奇妙的。我當時也感覺到了,上面的五個「ip」位址中。僅僅有乙個滿足要求的,我們一條

命令就找出來了,是不是頓時被吸引住了。那麼我們開始正規表示式的**吧。

1.字元類:

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

常見的字元類例如以下:

我寫了一些簡單的**來驗證上述字元類

2.數量限定符

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

我寫的測試**例如以下:

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

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

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

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

3.位置限定符

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

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

特殊字元:

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

2. |    '|' 可用於連線兩個 字表示式

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

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

吧,linux平台下的自帶的工具,對grep的介紹我引用搜狗百科的介紹:grep是一種強大的文字搜尋工具

。它能使用正

則表示式

搜尋文字,並把匹配的行列印出來。unix的grep家族包含grep、egrep

和fgrep

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

些自己主動化的文字處理工作。

我在上面的樣例中使用的是egrep工具。是grep的擴充套件,這個工具的很多其它使用方法以及上面介紹

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

部落格中再介紹。

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

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

shell指令碼學習筆記之grep 正規表示式

grep命令是linux中一種強大的文字搜尋工具,它能使用正規表示式搜尋文字,並把匹配的行列印出來。grep全稱是global regular expression print,表示全域性正規表示式版本,它的使用許可權是所有使用者。grep的主要引數 c 只輸出匹配行的計數。i 不區分大小寫 只適用...

shell指令碼學習 正規表示式

正規表示式是對字串操作的一種邏輯公式,就是用事先定義好的一些特定字元 及這些特定字元的組合,組成乙個 規則字串 這個 規則字串 用來表達對字串的一種過濾輯。給定乙個正規表示式和另乙個字串,我們可以達到如下的目的 1.給定的字串是否符合正規表示式的過濾邏輯 稱作 匹配 2.可以通過正規表示式,從字串中...

shell指令碼學習筆記

學習筆記 1,檔案名字命名為 sh,字尾sh表明這是乙個bash指令碼檔案 2,shell指令碼的第一行如下 bin sh bin sh告訴系統其後路徑所指定的程式即是解釋此指令碼檔案的shell程式 3,寫完指令碼後儲存檔案,然後將檔案變成可執行檔案 chmod x test.sh 4,以下是乙個...