真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

shell編程之正則表達(dá)式(一)基礎(chǔ)正則表達(dá)式-創(chuàng)新互聯(lián)

正則表達(dá)式
之前學(xué)習(xí)了 Shell 腳本的基礎(chǔ)用法,已經(jīng)可以利用條件判斷、循環(huán)等語(yǔ)句編輯 Shell 腳本。接下來(lái)我們將開(kāi)始介紹一個(gè)很重要的概念——正則表達(dá)式(RegularExpression,RE)。
正則表達(dá)式的定義
正則表達(dá)式又稱正規(guī)表達(dá)式、常規(guī)表達(dá)式。在代碼中常簡(jiǎn)寫為 regex、regexp 或 RE。正則表達(dá)式是使用單個(gè)字符串來(lái)描述、匹配一系列符合某個(gè)句法規(guī)則的字符串,簡(jiǎn)單來(lái)說(shuō), 是一種匹配字符串的方法,通過(guò)一些特殊符號(hào),實(shí)現(xiàn)快速查找、刪除、替換某個(gè)特定字符串。
正則表達(dá)式是由普通字符與元字符組成的文字模式。模式用于描述在搜索文本時(shí)要匹配的一個(gè)或多個(gè)字符串。正則表達(dá)式作為一個(gè)模板,將某個(gè)字符模式與所搜索的字符串進(jìn)行匹配。其中普通字符包括大小寫字母、數(shù)字、標(biāo)點(diǎn)符號(hào)及一些其他符號(hào),元字符則是指那些在正則表達(dá)式中具有特殊意義的專用字符,可以用來(lái)規(guī)定其前導(dǎo)字符(即位于元字符前面的字符)在目標(biāo)對(duì)象中的出現(xiàn)模式。
正則表達(dá)式一般用于腳本編程與文本編輯器中。很多文本處理器與程序設(shè)計(jì)語(yǔ)言均支持正則表達(dá)式,如前面提到的 Perl、Linux 系統(tǒng)中常見(jiàn)的文本處理器(grep、egrep、sed、awk)。正則表達(dá)式具備很強(qiáng)大的文本匹配功能,能夠在文本海洋中快速高效地處理文本。
正則表達(dá)式用途
對(duì)于一般計(jì)算機(jī)用戶來(lái)說(shuō),由于使用到正則表達(dá)式的機(jī)會(huì)不多,所以無(wú)法體會(huì)正則表達(dá)式的魅力,而對(duì)于系統(tǒng)管理員來(lái)說(shuō),正則表達(dá)式則是必備技能之一。
正則表達(dá)式對(duì)于系統(tǒng)管理員來(lái)說(shuō)是非常重要的,系統(tǒng)運(yùn)行過(guò)程中會(huì)產(chǎn)生大量的信息,這些信息有些是非常重要的,有些則僅是告知的信息。身為系統(tǒng)管理員如果直接看這么多的信息數(shù)據(jù),無(wú)法快速定位到重要的信息,如“用戶賬號(hào)登錄失敗”“服務(wù)啟動(dòng)失敗”等信息。這時(shí)可以通過(guò)正則表達(dá)式快速提取“有問(wèn)題”的信息。如此一來(lái),可以將運(yùn)維工作變得更加簡(jiǎn)單、方便。
目前很多軟件也支持正則表達(dá)式,最常見(jiàn)的就是郵件服務(wù)器。在 Internet 中,垃圾/廣告郵件經(jīng)常會(huì)造成網(wǎng)絡(luò)塞車,如果在服務(wù)器端就將這些問(wèn)題郵件提前剔除的話,客戶端就會(huì)減少很多不必要的帶寬消耗。而目前常用的郵件服務(wù)器 postfix 以及支持郵件服務(wù)器的相關(guān)分析軟件都支持正則表達(dá)式的比對(duì)功能。將來(lái)信的標(biāo)題和內(nèi)容與特殊字符串進(jìn)行對(duì)比,發(fā)現(xiàn)問(wèn)題郵件就過(guò)濾掉。
除郵件服務(wù)器之外,很多服務(wù)器軟件都支持正則表達(dá)式。雖然這些軟件都支持正則表達(dá)式,不過(guò)字符串的對(duì)比規(guī)則還需要系統(tǒng)管理員來(lái)添加,所以作為系統(tǒng)管理員,正則表達(dá)式是必須掌握的技能之一。
基礎(chǔ)正則表達(dá)式
正則表達(dá)式的字符串表達(dá)方法根據(jù)不同的嚴(yán)謹(jǐn)程度與功能分為基本正則表達(dá)式與擴(kuò)展正則表達(dá)式?;A(chǔ)正則表達(dá)式是常用的正則表達(dá)式的最基礎(chǔ)的部分。在 Linux 系統(tǒng)中常見(jiàn)的文件處理工具中 grep 與 sed 支持基礎(chǔ)正則表達(dá)式,而 egrep 與 awk 支持?jǐn)U展正則表達(dá)式。掌握基礎(chǔ)正則表達(dá)式的使用方法,首先必須了解基本正則表達(dá)式所包含的元字符的含義,下面通過(guò) grep 命令以舉例的方式逐個(gè)介紹。
基礎(chǔ)正則表達(dá)式示例:
查找特定字符非常簡(jiǎn)單,如執(zhí)行以下命令即可從 test.txt 文件中查找出特定字符“the” 所在位置。其中“-n”表示顯示行號(hào)、“-i”表示不區(qū)分大小寫。命令執(zhí)行后,符合匹配標(biāo)準(zhǔn)的字符,字體顏色會(huì)變?yōu)榧t色(本章中全部通過(guò)加粗顯示代替)。
查找特定字符

讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來(lái)自于我們對(duì)這個(gè)行業(yè)的熱愛(ài)。我們立志把好的技術(shù)通過(guò)有效、簡(jiǎn)單的方式提供給客戶,將通過(guò)不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長(zhǎng)期合作伙伴,公司提供的服務(wù)項(xiàng)目有:域名注冊(cè)、網(wǎng)頁(yè)空間、營(yíng)銷軟件、網(wǎng)站建設(shè)、德陽(yáng)網(wǎng)站維護(hù)、網(wǎng)站推廣。
[root@localhost ~]# grep -n 'the' test.txt

shell編程之正則表達(dá)式(一)基礎(chǔ)正則表達(dá)式

[root@localhost ~]# grep -in 'the' test.txt

shell編程之正則表達(dá)式(一)基礎(chǔ)正則表達(dá)式
若反向選擇,如查找不包含“the”字符的行,則需要通過(guò) grep 命令的“-vn”選項(xiàng)實(shí)現(xiàn)。

[root@localhost ~]# grep -vn 'the' test.txt

shell編程之正則表達(dá)式(一)基礎(chǔ)正則表達(dá)式
利用中括號(hào)“[]”來(lái)查找集合字符
想要查找“shirt”與“short”這兩個(gè)字符串時(shí),可以發(fā)現(xiàn)這兩個(gè)字符串均包含“sh” 與“rt”。此時(shí)執(zhí)行以下命令即可同時(shí)查找到“shirt”與“short”這兩個(gè)字符串。“[]”中無(wú)論有幾個(gè)字符,都僅代表一個(gè)字符,也就是說(shuō)“[io]”表示匹配“i”或者“o”。

[root@localhost ~]# grep -n 'sh[io]rt' test.txt

shell編程之正則表達(dá)式(一)基礎(chǔ)正則表達(dá)式
若要查找包含重復(fù)單個(gè)字符“oo”時(shí),只需要執(zhí)行以下命令即可。

[root@localhost ~]# grep -n 'oo' test.txt

shell編程之正則表達(dá)式(一)基礎(chǔ)正則表達(dá)式
若查找“oo”前面不是“w”的字符串,只需要通過(guò)集合字符的反向選擇“[^]”來(lái)實(shí)現(xiàn)該目的,如執(zhí)行“grep –n‘[^w]oo’test.txt”命令表示在 test.txt 文本中查找“oo” 前面不是“w”的字符串。

[root@localhost ~]# grep -n '[^w]oo' test.txt

shell編程之正則表達(dá)式(一)基礎(chǔ)正則表達(dá)式
在上述命令的執(zhí)行結(jié)果中發(fā)現(xiàn)“woood”與“wooooood”也符合匹配規(guī)則,二者均包含“w”。其實(shí)通過(guò)執(zhí)行結(jié)果就可以看出,符合匹配標(biāo)準(zhǔn)的字符加粗顯示,而上述結(jié)果中可以得知,“#woood #”中加粗顯示的是“ooo”,而“oo”前面的“o”是符合匹配規(guī)則的。同理 “#woooooood #”也符合匹配規(guī)則。
若不希望“oo”前面存在小寫字母,可以使用“grep –n‘[^a-z]oo’test.txt”命令實(shí)現(xiàn),其中“a-z”表示小寫字母,大寫字母則通過(guò)“A-Z”表示。

[root@localhost ~]# grep -n '[^a-z]oo' test.txt

shell編程之正則表達(dá)式(一)基礎(chǔ)正則表達(dá)式

[root@localhost ~]# grep -n '[^a-zA-Z]oo' test.txt

過(guò)濾以a-z,A-Z開(kāi)頭的字符串
查找包含數(shù)字的行可以通過(guò)“grep –n‘[0-9]’test.txt”命令來(lái)實(shí)現(xiàn)。

[root@localhost ~]# grep -n '[0-9]' test.txt

shell編程之正則表達(dá)式(一)基礎(chǔ)正則表達(dá)式
查找行首“^”與行尾字符“$”
基礎(chǔ)正則表達(dá)式包含兩個(gè)定位元字符:“^”(行首)與“$”(行尾)。在上面的示例中,查詢“the”字符串時(shí)出現(xiàn)了很多包含“the”的行,如果想要查詢以“the”字符串為行首的行,則可以通過(guò)“^”元字符來(lái)實(shí)現(xiàn)。

[root@localhost ~]# grep -n '^the' test.txt

shell編程之正則表達(dá)式(一)基礎(chǔ)正則表達(dá)式

[root@localhost ~]# grep -n '\.$‘’ test.txt

shell編程之正則表達(dá)式(一)基礎(chǔ)正則表達(dá)式
當(dāng)查詢空白行時(shí),執(zhí)行“grep –n‘^$’test.txt”命令即可。

[root@localhost ~]# grep -n '^$' test.txt

shell編程之正則表達(dá)式(一)基礎(chǔ)正則表達(dá)式
查找任意一個(gè)字符“.”與重復(fù)字符“*”

[root@localhost ~]# grep -n 'w..d' test.txt

shell編程之正則表達(dá)式(一)基礎(chǔ)正則表達(dá)式
”代表的是重復(fù)零個(gè)或多個(gè)前面的單字符?!皁”表示擁有零個(gè)(即為空字符)或大于等于一個(gè)“o”的字符,因?yàn)樵试S空字符,所以執(zhí)行“grep –n‘o’test.txt”命令會(huì)將文本中所有的內(nèi)容都輸出打印。如果是“oo”, 則第一個(gè) o 必須存在,第二個(gè) o 則是零個(gè)或多個(gè) o,所以凡是包含 o、oo、ooo、ooo,等的資料都符合標(biāo)準(zhǔn)。同理,若查詢包含至少兩個(gè) o 以上的字符串,則執(zhí)行“grep –n‘ooo*’ test.txt”命令即可。

[root@localhost ~]# grep -n 'ooo*' test.txt

shell編程之正則表達(dá)式(一)基礎(chǔ)正則表達(dá)式
查詢以 w 開(kāi)頭 d 結(jié)尾,中間包含至少一個(gè) o 的字符串,執(zhí)行以下命令即可實(shí)現(xiàn)。

[root@localhost ~]# grep -n 'woo*d' test.txt

shell編程之正則表達(dá)式(一)基礎(chǔ)正則表達(dá)式
查詢以 w 開(kāi)頭 d 結(jié)尾,中間的字符可有可無(wú)的字符串。

[root@localhost ~]# grep -n 'w.*d' test.txt

shell編程之正則表達(dá)式(一)基礎(chǔ)正則表達(dá)式
查詢?nèi)我鈹?shù)字所在行

[root@localhost ~]# grep -n '[0-9][0-9]*' test.txt

shell編程之正則表達(dá)式(一)基礎(chǔ)正則表達(dá)式
查找連續(xù)字符范圍“{}”
在上面的示例中,我們使用“.”與“*”來(lái)設(shè)定零個(gè)到無(wú)限多個(gè)重復(fù)的字符,如果想要限制一個(gè)范圍內(nèi)的重復(fù)的字符串該如何實(shí)現(xiàn)呢?例如,查找三到五個(gè) o 的連續(xù)字符,這個(gè)時(shí)候就需要使用基礎(chǔ)正則表達(dá)式中的限定范圍的字符“{}”。因?yàn)椤皗}”在 Shell 中具有特殊 意義,所以在使用“{}”字符時(shí),需要利用轉(zhuǎn)義字符“\”,將“{}”字符轉(zhuǎn)換成普通字符。 “{}”字符的使用方法如下所示。
查詢兩個(gè) o 的字符:

[root@localhost ~]# grep -n 'o\{2\}' test.txt

shell編程之正則表達(dá)式(一)基礎(chǔ)正則表達(dá)式
查詢以 w 開(kāi)頭以 d 結(jié)尾,中間包含 2~5 個(gè) o 的字符串

[root@localhost ~]# grep -n 'wo\{2,5\}d' test.txt

shell編程之正則表達(dá)式(一)基礎(chǔ)正則表達(dá)式
查詢以 w 開(kāi)頭以 d 結(jié)尾,中間包含 2 以上 o 的字符串

[root@localhost ~]# grep -n 'wo\{2,\}d' test.txt

shell編程之正則表達(dá)式(一)基礎(chǔ)正則表達(dá)式
元字符總結(jié)
shell編程之正則表達(dá)式(一)基礎(chǔ)正則表達(dá)式
擴(kuò)展正則表達(dá)式
通常情況下會(huì)使用基礎(chǔ)正則表達(dá)式就已經(jīng)足夠了,但有時(shí)為了簡(jiǎn)化整個(gè)指令,需要使用范圍更廣的擴(kuò)展正則表達(dá)式。例如,使用基礎(chǔ)正則表達(dá)式查詢除文件中空白行與行首為“#” 之外的行(通常用于查看生效的配置文件),執(zhí)行“grep –v‘^$’test.txt | grep –v ‘^#’”即可實(shí)現(xiàn)。這里需要使用管道命令來(lái)搜索兩次。如果使用擴(kuò)展正則表達(dá)式,可以簡(jiǎn)化為“egrep –v‘^$|^#’test.txt”,其中,單引號(hào)內(nèi)的管道符號(hào)表示或者(or)。
此外,grep 命令僅支持基礎(chǔ)正則表達(dá)式,如果使用擴(kuò)展正則表達(dá)式,需要使用 egrep 或 awk 命令。awk 命令在后面的小節(jié)進(jìn)行講解,這里我們直接使用 egrep 命令。egrep 命令與 grep 命令的用法基本相似。egrep 命令是一個(gè)搜索文件獲得模式,使用該命令可以搜索文件中的任意字符串和符號(hào),也可以搜索一個(gè)或多個(gè)文件的字符串,一個(gè)提示符可以是單個(gè)字符、一個(gè)字符串、一個(gè)字或一個(gè)句子。
與基礎(chǔ)正則表達(dá)式類型相同,擴(kuò)展正則表達(dá)式也包含多個(gè)元字符,常見(jiàn)的擴(kuò)展正則表達(dá)
式的元字符主要包括以下幾個(gè)
shell編程之正則表達(dá)式(一)基礎(chǔ)正則表達(dá)式

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。


新聞標(biāo)題:shell編程之正則表達(dá)式(一)基礎(chǔ)正則表達(dá)式-創(chuàng)新互聯(lián)
URL地址:http://weahome.cn/article/csgech.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部