正則表達式,又稱正規表示法、常規表示法(英語:Regular Expression,在代碼中常簡寫爲regex、regexp或RE),計算機科學的一個概念。正則表達式使用單個字符串來描述、匹配一系列符合某個句法規則的字符串。在很多文本編輯器裏,正則表達式通常被用來檢索、替換那些符合某個模式的文本。
grep (global search regular expression(RE) and print out the line,全面搜索正則表達式並把行打印出來)是一種強大的文本搜索工具,它能使用正則表達式搜索文本,並把匹配的行打印出來。Unix的grep家族包括grep、egrep和fgrep。這裏僅對grep和egrep做簡要示例。
基本格式:
grep [OPTIONS] PATTERN [FILE...]
grep [OPTIONS] [-e PATTERN | -f FILE] [FILE...]
常用命令:
-v: 反向,顯示不能被模式所匹配到的行;
-o: 僅顯示被模式匹配到的字串,而非整行;
-i: 不區分字符大小寫, ignore-case
-A #:之後的幾行字符
-B:之前的幾行字符
-n: 顯示匹配行及行號,在顯示出內容的每行前面會顯示行數
基本格式:
“\w”匹配文字和數字字符,也就是[A-Za-z0-9],如:'G\w*p'匹配以G後跟零個或多個文字或數字字符,然後是p。
x{m},x{m,},x{m,n}
[[:alnum:]] 匹配任何一個字母或數字([A-Za-z0-9])
[[:alpha:]] 匹配任何一個字母([A-Za-z])
[[:lower:]] 匹配任何一個小寫字母([a-z])
[[:upper:]] 匹配任何一個大寫字母([A-Z])
[[:space:]] 任何一個空白字符:製表符、空格
[[:punct:]] 任何一個標點符號(不包括:[:alnum:]、[:cntrl:]、[:space:]字符集)
次數匹配:用來指定匹配其前面的字符的次數
*: 任意次(0次或多次)
.*: 匹配任意長度的任意字符
\{m\}: 匹配m次
\{m,n\}:最少匹配m次,最多匹配n次
\{m,\}: 至少m次;
\{0,n\}:至多n次;
分組
\(\)
檢索文件中包含w字符之以es爲組後面接t然後任意字符,組es重複一次的行。 引用: \1: 後向引用,引用前面的第一個左括號以及與之對應的右括號中的模式所匹配到的內容。(後向引用可以有多次,方法\#(#:數字))。 egrep:egrep爲grep的拓展形式,功能比grep強大。比如:grep 不支持 a|b 或 (abc|xyz) 這類", 但是 egrep 支持. grep 在處理 {n,m} 時, 需用 \{ 與 \} 處理, 但 egrep 則不需. 注: ?: 匹配其前面的字符0或1次; +: 匹配其前面的字符至少1次 |:表示或關係,比如 'gd|good|dog' 表示有gd,good或dog的串 ():將部分內容合成一個單元組。比如要搜索 glad 或 good 可以這樣 'g(la|oo)d',()的好處是可以對小組使用 + ? * 等。 例子:
|
fgrep
不作 RE 處理, 表達式僅作一般字符串處理, 所有 meta 均失去功能.
Ps:由於本人此前無linux經驗,作爲初學者翻閱了大量前人博客,纔對正則表達式有了初步概念。