明輝手游網(wǎng)中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

linux通配符與正則表達式的使用

[摘要]linux通配符的英文名是wildcard,說白了一般只用于文件名匹配, 它是由shell解析的。而正則表達式呢?從簡單的角度去理解,你可以把正則表達式看成是一種字符串匹配模式標準。那linux通配...

  linux通配符的英文名是wildcard,說白了一般只用于文件名匹配, 它是由shell解析的。而正則表達式呢?從簡單的角度去理解,你可以把正則表達式看成是一種字符串匹配模式標準。那linux通配符和正則表達式是如何使用的呢?請看下文。

linux通配符和正則表達式的使用

  一、正則表達式:

  元字符是用來闡釋字符表達式意義的字符,簡言之,就是用來描述字符的字符。

  正則表達式RE(Regular Expression)是由一串字符和元字符構(gòu)成的字符串。

  正則表達式的主要功能是文本查詢和字符串操作,它可以匹配文本的一個字符或字符集合。實際上正則表達式完成了數(shù)據(jù)的過濾,將不滿足正則表達式定義的數(shù)據(jù)拒絕掉,剩下與正則表達式匹配的數(shù)據(jù)。

  基本的正則表達式元字符集合及其意義:

linux通配符和正則表達式的使用

  1、“*”符號

  zha*ng :“*”前面的普通字符是a,就表示匹配a字符0次或多次,如:zhng、zhang、zhaaaang……

 。根據(jù)測試可以不包括前面的字符,即匹配0次

  2、匹配空行

  匹配行首的^和匹配行尾的$組合起來“^$”可以用來匹配空行,如果需要匹配只包含一個字符的行,可以用“^.$”

  3、“[]”符號

  匹配字符集合,支持窮舉方法列出字符集合的所有元素,也支持使用“-”符號表示字符集合范圍。

  [12345] 等價于 [1-5]

  我們知道“^”符號表示匹配行首,但是,“^”符號放到“[]”符號中就不再表示匹配行首了,而是表示取反符號。

   [^b-d]  :表示不再b~d范圍內(nèi)的字符

   [A-Za-z] [A-Za-z]*  :匹配任意英文單詞

  二、正則表達式的擴展:

  擴展的正則表達式元字符及其意義:

linux通配符和正則表達式的使用

  1、“?”符號

 。根據(jù)測試可以不包括前面的字符,即匹配0次

  2、“()”符號和“ ”符號

  “()”符號和“ ”符號通常結(jié)合使用,表示一組可選字符的集合。

  re(a b c)d 等價于 re[abc]d

  “ ”符號也可以表示多個正則表達式的“或”關(guān)系。

  grep -E “zha?ng zhi”  文件

  三、linux通配符:

  bash shell本身不支持正則表達式,使用正則表達式的是shell命令和工具,如grep,sed,awk。

  bash shell可以使用正則表達式中的一些元字符實現(xiàn)通配(Globbing)功能。

  通配是把一個包含通配符的非具體文件名擴展存儲在計算機,服務器或者網(wǎng)絡上的一批具體文件名的過程。

 。可以看出通配主要應用匹配文件名上,而正則主要應用于字符串上

  最常用的通配符包括正則表達式元字符:?、*、[]、{}、^等。

linux通配符和正則表達式的使用

  “{}”符號

  表示一組表達式的集合。如:{[a-h]*.awk ,a?.txt}

  以上便是關(guān)于linux通配符和正則表達式的一些使用技巧和作用解釋,以前總是把通配符和正則表達式的標志搞混,忘記做筆記,現(xiàn)在看到用戶的說說想起自己對于這塊也不熟悉,因此特來撰寫這篇教程。


Linux是一套免費使用和自由傳播的類Unix操作系統(tǒng)