51cto博客×××作《Linux之正則表達式》

1、簡介:

  grep是一個最初用於Unix操作系統的命令行工具,在Linux同樣得到了廣泛的使用,這個程序的名稱來自Unix文本編輯器ed類似操作的命令。grep全稱是Globally search for a Regular Expression and print out the line,表示在給出文件列表或標準輸入後,會對匹配一個或者多個正則表達式的文本進行搜索,並只輸出匹配(或者不匹配)的行或文本,Linux下所有用戶皆可使用。

2、格式:

grep [OPTIONS] PATTERN [FILE...]

3、常用選項:

--color=auto:表示使用顏色填充匹配到的內容,使其高亮顯示,效果如下圖:

wKiom1MK8ZDzIf6gAAALBvr9NdI353.png

-v:反向匹配,顯示不能被模式所匹配到的行;

使用-v選項的效果如下圖:

wKiom1MK7czwsKvlAAASMmE-Y7A244.png

未使用-v選項的效果如下圖:

wKiom1MLKM-T6K9OAACEQvwmW4E535.png

-i:不區分字符大小寫,效果如下圖:

wKiom1MK73Lz4zbSAAAujJTlIIc101.png

-o: 僅匹配被模式匹配到的字串,而非整行;

使用-o選項的效果如下圖:

wKioL1MK8WmRZ2FlAAAHYtXSqCQ372.png

不使用-o選項的效果如下圖:

wKiom1MK8ZCw5DHsAAAK8qUw9GE004.png

正常顯示效果:

wKioL1MLGy_yQJdqAAAKDgiGO2Q266.png

-A#:#爲數字,表示匹配到內容及其後邊的#行,效果如下圖:

wKioL1MK84rywpshAAAQ--GS69U676.png

-B#:#爲數字,表示匹配到內容及其前邊的#行,效果如下圖:

wKiom1MK87DDWMKmAAAQHug5ZP0703.png

-C#: #爲數字,表示匹配到內容及其前後的#行,效果如下圖:

wKioL1MK84rDSMf_AAAXcT24oJE507.png

4、正則表達式元字符:正則表達式是一類字符所書寫出來的模式(pattern),元字符:不代表字符 本身的意義,用於額外功能性的描述。

字符匹配:

.:表示匹配任意單個字符,效果如下圖:

wKiom1MLJRfx_sPvAAAPQYJHnOE464.png

[]:表示匹配範圍內的任意單個字符,[^]:表示匹配範圍外的任意單個字符,效果如下圖:

wKioL1MLJPHhJEbaAAAQYpziRho485.png

常用範圍表示格式:

[0-9]:表示匹配所有數字,等同於[[:digit:]],效果如下圖:

wKiom1MLJReA8J5hAAARbEcXw1k329.png

[[:lower:]]:表示匹配所有小寫字母,等同於[a-z],效果如下圖:

wKioL1MLJPKjr-gNAAAQ1aftBcw750.png

[[:upper:]]:表示匹配所有大寫字母,等同於[A-Z],效果如下圖:

wKiom1MLJReiwFXZAAARKFH8F1w217.png

[[:alpha:]]:表示匹配所有大寫字母和小寫字母,效果如下圖:

wKioL1MLJPLQa2QdAAALIDOmovk413.png

[[:alnum:]]:表示匹配字母和數字,效果如下圖:

wKiom1MLJiPC3YNSAAAK2hI6fRQ049.png

[[:punct:]]:表示匹配標點符號,效果如下圖:

wKioL1MLJPKSZ_yjAAAITJ7ffiY996.png

[[:space:]]:表示匹配空白字符,由於空白字符無法顯示顏色這裏取非空白符測試,效果如下圖:

wKiom1MLJRjwBHOvAAASHlkzJ2E486.png

次數匹配:

*:表示匹配之前的字符任意次

\?:表示匹配之前的字符0次或1次

\{m\}:表示匹配之前的字符m次

\{m,n\}:表示匹配之前的字符至少m次,至多n次

\{m,\}:表示匹配之前的字符至少m次

\{0,n\}:表示匹配之前的字符至多n次

wKioL1MLDuLR6Eo0AAApcZKbJh8796.png

位置錨定:

^:錨定行首

wKioL1MLD-aismcYAAAHjH2hO4s917.png

$:錨定行尾

wKiom1MLEAzR9Je1AAAHzQtSNN0006.png

^$:空白行

wKiom1MLEAzwtzbwAAAFRUIGy5g362.png

單詞錨定:

\<char:錨定詞首,等同於\bchar

char\>:錨定詞尾, 等同於char\b

\<char\>:表示錨定單詞,等同於\bchar\b

wKioL1MLEFjjkzLjAAALtBV7eYU986.png

分組:\(pattern\)        

引用:\(pattern\).*\1:表示引用前邊分組內容

wKioL1MLEeiTvNIaAAANdWJYpME097.png

5、egrep和grep的差異:

增加的元字符

+:表示匹配前邊的字符至少一次

|:表示匹配兩邊的任意一邊,比如x|y,表示匹配x或者y

wKiom1MLGADR6hC2AAAZFuWvQhs814.png

溫馨提醒:注意有無小括號的區別

變動的元字符

? :等同於grep中的\?

():等同於grep中的\(\)

{}:等同於grep中的\{\}

wKiom1MLGWiieXAPAAAiKIYlvFI423.png

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章