溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Linux行處理工具之grep正則表達(dá)式實(shí)例分析

發(fā)布時(shí)間:2022-08-09 17:32:46 來(lái)源:億速云 閱讀:130 作者:iii 欄目:開(kāi)發(fā)技術(shù)

這篇文章主要講解了“Linux行處理工具之grep正則表達(dá)式實(shí)例分析”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“Linux行處理工具之grep正則表達(dá)式實(shí)例分析”吧!

在介紹正則表達(dá)式之前,我們先來(lái)嘗試一下,假如有如下文本。

Linux行處理工具之grep正則表達(dá)式實(shí)例分析

我們想獲取空行,應(yīng)該如何來(lái)寫(xiě)呢?

命令:

grep ^$ test1 -n

Linux行處理工具之grep正則表達(dá)式實(shí)例分析

通過(guò)上述例子,我們使用正則表達(dá)式^$已經(jīng)成功拿到了第四行數(shù)據(jù),那么,這究竟如何解呢,我們細(xì)看博文。

正則表達(dá)式在grep應(yīng)用以及差別

grep表達(dá)式有三種不同的版本,分別為basic(BRE) 、extendedERE) 以及 perl(PCRE) ,我們grep默認(rèn)支持的是BRE,而EREegrep支持的,或者說(shuō)是grep -E支持的, 而PCRE則是grep -P支持的,那么這三者究竟有啥區(qū)別呢?

 BREEREPCRE

任意字符...

前一個(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)看下。

Linux行處理工具之grep正則表達(dá)式實(shí)例分析

如上所述,若我們需要連接多個(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

Linux行處理工具之grep正則表達(dá)式實(shí)例分析

同樣的,該方法還可以用來(lái)匹配其ip地址,正則: [0-9]{0,3}.[0-9]{0,3}.[0-9]{0,3}.[0-9]{0,3}

Linux行處理工具之grep正則表達(dá)式實(shí)例分析

匹配空行

若我們想匹配空行,則可以使用^$進(jìn)行匹配,即: 開(kāi)頭就是結(jié)尾。

例如:

Linux行處理工具之grep正則表達(dá)式實(shí)例分析

如上命令,我們順利取出了 第3、5、6行數(shù)據(jù)

匹配所有字母

命令:

echo 'Ac123e23dddwQW21' | grep "[[:upper:]]|[[:lower:]]" -o

Linux行處理工具之grep正則表達(dá)式實(shí)例分析

取出redis在使用的配置文件

我們知道redis服務(wù)器是以#來(lái)注釋的,我們可以利用grep或者egrep來(lái)過(guò)濾掉注釋和空格,例如:

Linux行處理工具之grep正則表達(dá)式實(shí)例分析

fgrep

fgrep最為簡(jiǎn)單,它不會(huì)啟用正則表達(dá)式,而是按照字符來(lái)進(jìn)行搜索,什么意思呢? 我們舉個(gè)小案例就清楚了,

Linux行處理工具之grep正則表達(dá)式實(shí)例分析

它不會(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)注!

向AI問(wèn)一下細(xì)節(jié)

免責(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)容。

AI