標籤:re grep egrep fgrep
Regex(Basic Regular Expression簡寫為 REGEX、REGEXP 或 BRE),是對字串操作的一種邏輯公式,就是用事先定義好的特定字元及特定字元的組合,組成一個“規則字串”,這種“規則字串”稱為模式,用來對文本字串的一種過濾邏輯,通常被用來檢索、替換符合某個模式的文本。POSIX將Regex分為基本Regex和擴充Regex(Extended Regular Expression簡寫為ERE),大部分Linux應用和工具僅支援基本Regex。
grep(Global Regular Expression Print):根據模式去搜尋文本並將符合模式的文本顯示出來;grep是一個強大的文本搜尋工具,它能使用Regex搜尋文本,並把匹配到的行列印出來;grep執行時會返回一個狀態值來說明搜尋的狀態,如果模式搜尋成功,則返回0;不成功,則返回1;如果檢索的檔案不存在,則返回2。
模式(pattern):由文本字元和Regex的元字元組合而成的匹配條件;
元字元:在Regex中起特殊意義的專用字元;
格式:
grep [options] pattern [arguments]
常用選項:
-E:使用擴充Regex
-F:使用快速grep進行匹配,不支援Regex
--colour | --color:匹配到的關鍵字高亮(非常實用)
可以使用alias grep=‘grep --colour‘定義別名,省去每次輸入之煩
-v:反向選擇,顯示不匹配的行
-i:忽略大小寫
-o:只顯示匹配到的字串
-c:顯示匹配次數
-w:匹配整個單詞
-x:匹配整行
-f:從文本中獲得匹配模式
-n:顯示匹配到的行號
-A #:after的意思,顯示匹配字串後#行的內容
-B #:before的意思,顯示匹配字串前#行的內容
-C #:顯示匹配字串前後#行的內容
基本Regex元字元:
\:逸出字元
.:匹配任意單個字元
*:匹配其前面的字元任意次
?:匹配其前面的字元一次或0次
\{m,n\}:匹配其前面的字元最少m次,最多n次
^:錨定行首,其後面的字元必須出現在行首
$:錨定行尾,其前面的字元必須出現的行尾
^$:空行的表示方法
[]:匹配指定範圍內的單個字元
[:space:]:空白字元
[:punct:]:標點符號
[:digit:] | [0-9]:數字
[:lower:] | [a-z]:小寫字母
[:upper:] | [A-Z]:大寫字母
[:alpha:] | [a-zA-Z]:大小寫字母
[:alnum:] | [0-9a-zA-Z]:數字和大小寫字母
可以使用man 7 glob查看此列表
|:或運算,其左右運算元均可為一個子運算式
[^]:匹配指定範圍外的單個字元
\< | \b:錨定詞首,其後面的字元作為單詞的首部
\> | \b:錨定詞尾,其前面的字元作為單詞的尾部
\(\):表示一個字元集合,後向引用
\1:引用第一個左括弧與之對應的右括弧的所有內容;\2,\3......
搜尋字串是Regex,為了避免shell的元字元對Regex的影響,使用(‘‘)單引號括起來,盡量避免使用("")雙引號,或者不適用引號。
擴充Regex元字元:
擴充Regex在基本Regex的基礎上進行了擴充,在擴充Regex中不需要使用反斜線\來轉義特殊符號;
. * ?......等意義和基本Regex相同
+:匹配其前面的字元至少一次
{m,n}:匹配其前的字元最少m次,最多n次
():表示一個字元集合,後向引用
egrep(Extended):使用擴充Regex模式來匹配文本,已經使用‘grep -E’替代,用法同grep
fgrep(Fast):與grep和egrep不同,因為搜尋字串而不是搜尋匹配運算式的模式,所以速度快,但功能差;已經使用‘grep -F’替代,用法同grep
本文出自 “杆兒男” 部落格,請務必保留此出處http://wtime.blog.51cto.com/8829658/1537135