RHCE 學習筆記(17) 萬用字元和正規表示式

2021-07-09 15:18:35 字數 2195 閱讀 6291

原始出處 、作者資訊和本宣告。否則將追究法律責任。

這一節學習了萬用字元和正規表示式在grep裡面使用。

首先看看shell下的萬用字元。 

最最常見的符號如下所示:

數字 [0-9]

字母 [a-z]

非字母[^a-z]

非數字[^0-9]

任意符號 *

轉義符號 \

大寫 [[:upper:]] 

小寫 [[:lower:]]

數字 [[:digit:]]

字母 [[:alpha:]]

數字+字母[[:alnum:]]

空格 [[:blank:]]

看看例子

例1第乙個列出了數字和字母開頭的檔案

第二個列出了數字和-開頭的檔案

第三個列出來了數字開頭的檔案

例2如果直接查詢vsftp* 沒問題;但是如果在當前目錄下建立了匹配這個格式的檔案,那得到的結果就是當前目錄的檔案而不是軟體包了,因為yum是shell 的子程序,這個* 萬用字元在shell就被解析了;可以加引號或者轉移符號來避免誤會

下面來看看正規表示式在grep裡面的使用

grep之前已經學習過了,簡單的表達形式是 【grep 選項 字串 檔案】

選項可以是-n 行號,-v 反向選擇,-a 文字檔案,-i 忽略大小寫

萬用字元在grep一樣可以使用,不過有的符號意思發生了改變。

例3先看個基本的例子,反向搜尋沒有#的行,如果不加引號,他會被shell直接解析,而不是在grep中進行解析

^符號如果是在方括號裡面,表示否定; 如果是單引號裡面表示這個字串是以^後面的字元開頭的

對比如下所示

如果表示結尾的字元,可以用'$', 如果直接輸入『^$', 則表示空行

例4

空行如何表示乙個或者多個字元?我們可以用. (小圓點)來表示任意乙個符號,表示這個位置就有個符號,隨便是啥都行;* (星號) 可以表示有0個或者多個重複的符號,比如to* 可以表示的格式是t******xx,to***xx,too******x ...都是可以的

例5 比如 to* 和 t.m的區別

除了 小圓點和星號,我們還可以使用?表示0或1次; +表示1次以上, 表示表示式出現至少m次,最多n次;這需要使用擴充套件正規表示式-p或者-e,否則直接執行無效

例 6  直接執行沒有結果,-p用perl的方式來解析,就可以了 表示 o 出現3次,表示出現了2次到4次

to.?m 裡面 . 表示任意乙個字元,?表示這個任意字元出現了0次或者1次,因此滿足 tom, toxm 的字串都是可以的

類似的 to.+m裡面 .表示任意字元,+表示這個字元出現了1次或者多次,那麼匹配的字串是toxm,toxxm,to***m,換句話說滿足to開頭,m結尾的字串都是可以的

最後做個練習,如何只輸出ifconfig裡面ip的結果,不准用awk

這個能夠匹配的寫法太多了,豆子自己寫了個比較複雜的

下面是老師的寫法

本文出自 「麻婆豆腐」 部落格,請務必保留此出處

sql知識 05萬用字元和正則

以學生表為例子演示萬用字元 萬用字元 silecard 用來匹配值的一部分特殊字元。搜尋模式 search pattern 有字面值 萬用字元或兩者組合構成的搜尋條件。是常用的,在搜尋串當中標識任何字元出現的任一次數。select from student 學生表 where sname 姓名 雖然...

四 萬用字元過濾 正規表示式

為在搜尋子句中使用萬用字元,必須使用 like 操作符。like 指示mysql,後跟的搜尋模式利用萬用字元匹配而不是直接相等匹配進行比較。1.任何字元出現任意次數。select column name1 from table name where column name2 like jet 檢索以...

? a z 0 9 萬用字元 學習

萬用字元顧名思義就是通用的匹配資訊的符號,比如星號 就是代表匹配零個或多個字元,問號 是代表匹配單個字元,中括號內加上數字 0 9 代表匹配單個阿拉伯數字的字元,而中括號內加上字母 abc 則是代表匹配單個指定的英文本母。俗話講百聞不如一見,看書不如做實驗,例如匹配下所有在 dev目錄中且以sda開...