Linux 附帶有 GNU grep 命令工具,它支持?jǐn)U展正則表達(dá)式extended regular expressions,而且 GNU grep 在所有的 Linux 系統(tǒng)中都是默認(rèn)有的。Grep 命令被用于搜索定位存儲在您服務(wù)器或工作站上的任何信息。
正則表達(dá)式
正則表達(dá)式就是用于匹配每行輸入的一種模式,模式是指一串字符序列。下面是范例:
grep 正則表達(dá)式示例
在 /etc/passswd 目錄中搜索 'vivek'
錨點(diǎn)
你可以分別使用 ^ 和 $ 符號來正則匹配輸入行的開始或結(jié)尾。下面的例子搜索顯示僅僅以 vivek 開始的輸入行:
字符類
匹配 Vivek 或 vivek:
通配符
你可以使用 "." 來匹配單個(gè)字符。例子中匹配以 "b" 開頭以 "t" 結(jié)尾的3個(gè)字符的單詞:
點(diǎn)字符轉(zhuǎn)義
下面要匹配到 IP 地址為 192.168.1.254 的正則式是不正確的:(LCTT 譯注:可以匹配到該 IP 地址,但是也有可能匹配到間隔符號不是點(diǎn)的類似格式)
怎么使用 grep 的“或”匹配?
使用如下的語法:
怎么樣使 grep 命令高亮顯示?
使用如下的語法:
限定符 | 描述 |
---|---|
. | 匹配任意的一個(gè)字符。 |
? | 匹配前面的子表達(dá)式,最多一次。 |
* | 匹配前面的子表達(dá)式零次或多次。 |
+ | 匹配前面的子表達(dá)式一次或多次。 |
{N} | 匹配前面的子表達(dá)式 N 次。 |
{N,} | 匹配前面的子表達(dá)式 N 次到多次。 |
{N,M} | 匹配前面的子表達(dá)式 N 到 M 次,至少 N 次至多 M 次。 |
- | 只要不是在序列開始、結(jié)尾或者序列的結(jié)束點(diǎn)上,表示序列范圍。 |
^ | 匹配一行開始的空字符串;也表示字符不在要匹配的列表中。 |
$ | 匹配一行末尾的空字符串。 |
\b | 匹配一個(gè)單詞前后的空字符串。 |
\B | 匹配一個(gè)單詞中間的空字符串。 |
\ | 匹配單詞前面的空字符串。 |
\&; | 匹配單詞后面的空字符串。 |
grep 和 egrep
egrep 等同于 grep -E 。它會以擴(kuò)展的正則表達(dá)式的模式來解釋模式。下面來自 grep 的幫助頁:
基本的正則表達(dá)式元字符 ?、+、 {、 |、 ( 和 ) 已經(jīng)失去了它們原來的意義,要使用的話用反斜線的版本 \?、\+、\{、\|、\( 和 \) 來代替。 傳統(tǒng)的 egrep 并不支持 { 元字符,一些 egrep 的實(shí)現(xiàn)是以 \{ 替代的,所以一個(gè)可移植的腳本應(yīng)該避免在 grep -E 使用 { 符號,要匹配字面的 { 應(yīng)該使用 [}]。
GNU grep -E 試圖支持傳統(tǒng)的用法,如果 { 出在在無效的間隔規(guī)范字符串這前,它就會假定 { 不是特殊字符。
例如,grep -E '{1' 命令搜索包含 {1 兩個(gè)字符的串,而不會報(bào)出正則表達(dá)式語法錯(cuò)誤。
POSIX.2 標(biāo)準(zhǔn)允許這種操作的擴(kuò)展,但在可移植腳本文件里應(yīng)該避免這樣使用。
標(biāo)簽:海東 臺州 優(yōu)質(zhì)穩(wěn)定 孝感 九江 昌都 哈密 玉樹
巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《全面解析Linux的grep命令中正則表達(dá)式的用法》,本文關(guān)鍵詞 全面,解析,Linux,的,grep,命令,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。