您好,登錄后才能下訂單哦!
這篇文章主要講解了“Linux行處理工具之grep正則表達(dá)式實(shí)例分析”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“Linux行處理工具之grep正則表達(dá)式實(shí)例分析”吧!
在介紹正則表達(dá)式之前,我們先來(lái)嘗試一下,假如有如下文本。
我們想獲取空行,應(yīng)該如何來(lái)寫(xiě)呢?
命令:
grep ^$ test1 -n
通過(guò)上述例子,我們使用正則表達(dá)式^$
已經(jīng)成功拿到了第四行數(shù)據(jù),那么,這究竟如何解呢,我們細(xì)看博文。
grep
表達(dá)式有三種不同的版本,分別為basic
(BRE
) 、extended
(ERE
) 以及 perl
(PCRE
) ,我們grep
默認(rèn)支持的是BRE
,而ERE
是egrep
支持的,或者說(shuō)是grep -E
支持的, 而PCRE
則是grep -P
支持的,那么這三者究竟有啥區(qū)別呢?
BRE | ERE | PCRE | |||
---|---|---|---|---|---|
任意字符 | . | . | . | ||
前一個(gè)字符0次或者出現(xiàn)1次 | ? | ? | ? | ||
前一個(gè)字符出現(xiàn)0次或無(wú)數(shù)次 | * | * | * | ||
前一個(gè)字符出現(xiàn)一個(gè)或者更多 | + | + | + | ||
字符集 | [...] | [...] | [...] | ||
字符集取反 | [^...] | [^...] | [^...] | ||
匹配前面字符出現(xiàn)的n次 | {n} | {n} | {n} | ||
匹配前面字符出現(xiàn)的n次以上 | {n,} | {n,} | {n,} | ||
匹配前面字符出現(xiàn)的n次到m次 | {n,m} | {n,m} | {n,m} | ||
開(kāi)頭 | |||||
結(jié)尾 | $ | $ | $ | ||
多表達(dá)式連接 | | | ||||
單詞 | \w | \w | \w 或者 [[:word:]] | ||
字母大寫(xiě)/小寫(xiě) | [[:upper:]]/[[:lower:]] | [[:upper:]]/[[:lower:]] | [[:upper:]]/[[:lower:]] | ||
非單詞 | \W | ||||
空白字符 | \s 或者 [[:space:]] | \s 或者 [[:space:]] | |||
非空白字符 | [^[:space:]] | [^[:space:]] | \S | ||
數(shù)字 | \d 或者 [[:digit:]] | [[:digit:]] | [[:digit:]] | ||
非數(shù)字 | \D | [^[:digit:]] | [^[:digit:]] |
那么如何進(jìn)行切換呢? 如上面所示,我們來(lái)看下。
如上所述,若我們需要連接多個(gè)匹配項(xiàng),在BRE(grep)
中則是|
,而在ERE(egrep)
和PCRE(grep -P)
中則是|
,所以我們可以順利獲取出結(jié)果,更多匹配項(xiàng)如上所述
匹配電話號(hào)碼
若電話號(hào)碼為xxx-xxxx-xxxx
類(lèi)型的,如何進(jìn)行匹配呢? 我們可以使用'[0-9]{3}-[0-9]{4}-[0-9]{4}'
進(jìn)行匹配。
例如:
命令:
echo "telphone: 180-1234-5678" | grep '[0-9]{3}-[0-9]{4}-[0-9]{4}' -o
同樣的,該方法還可以用來(lái)匹配其ip
地址,正則: [0-9]{0,3}.[0-9]{0,3}.[0-9]{0,3}.[0-9]{0,3}
匹配空行
若我們想匹配空行,則可以使用^$
進(jìn)行匹配,即: 開(kāi)頭就是結(jié)尾。
例如:
如上命令,我們順利取出了 第3、5、6行數(shù)據(jù)
匹配所有字母
命令:
echo 'Ac123e23dddwQW21' | grep "[[:upper:]]|[[:lower:]]" -o
取出redis
在使用的配置文件
我們知道redis
服務(wù)器是以#
來(lái)注釋的,我們可以利用grep
或者egrep
來(lái)過(guò)濾掉注釋和空格,例如:
fgrep
最為簡(jiǎn)單,它不會(huì)啟用正則表達(dá)式,而是按照字符來(lái)進(jìn)行搜索,什么意思呢? 我們舉個(gè)小案例就清楚了,
它不會(huì)進(jìn)行任何正則匹配,所以可以直接使用搜索選就成,不用考慮轉(zhuǎn)移啥的。
感謝各位的閱讀,以上就是“Linux行處理工具之grep正則表達(dá)式實(shí)例分析”的內(nèi)容了,經(jīng)過(guò)本文的學(xué)習(xí)后,相信大家對(duì)Linux行處理工具之grep正則表達(dá)式實(shí)例分析這一問(wèn)題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。