shell腳本之正則表達(dá)式(一)---grep、egrep-創(chuàng)新互聯(lián)

正則表達(dá)式的定義

正則表達(dá)式又稱正規(guī)表達(dá)式、常規(guī)表達(dá)式。正則表達(dá)式是由普通字符與元字符組成的文字模式。模式用于描述在搜索文本時(shí)要匹配的一個(gè)或多個(gè)字符串。正則表達(dá)式一般用于腳本編程與文本編輯器中。很多文本處理器與程序設(shè)計(jì)語言均支持正則表達(dá)式,在Linux 系統(tǒng)中常見的文本處理器如grep、egrep、sed、awk。正則表達(dá)式具備很強(qiáng)大的文本匹配功能,能夠在文本海洋中快速高效地處理文本。

讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對(duì)這個(gè)行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長期合作伙伴,公司提供的服務(wù)項(xiàng)目有:域名申請(qǐng)、網(wǎng)頁空間、營銷軟件、網(wǎng)站建設(shè)、資陽網(wǎng)站維護(hù)、網(wǎng)站推廣。

正則表達(dá)式用途

正則表達(dá)式對(duì)于系統(tǒng)管理員來說是非常重要的,系統(tǒng)運(yùn)行過程中會(huì)產(chǎn)生大量的信息,這些信息有些是非常重要的,有些則僅是告知的信息。身為系統(tǒng)管理員如果直接看這么多的信息數(shù)據(jù),無法快速定位到重要的信息,如“用戶賬號(hào)登錄失敗”“服務(wù)啟動(dòng)失敗”等信息。這時(shí)可以通過正則表達(dá)式快速提取“有問題”的信息。如此一來,可以將運(yùn)維工作變得更加簡單、方便。


基礎(chǔ)正則表達(dá)式——grep

正則表達(dá)式的字符串表達(dá)方法根據(jù)不同的嚴(yán)謹(jǐn)程度與功能分為基本正則表達(dá)式與擴(kuò)展正則表達(dá)式?;A(chǔ)正則表達(dá)式是常用的正則表達(dá)式的最基礎(chǔ)的部分。

1.查找特定字符
-n 表示顯示行號(hào)
-i 表示不區(qū)分大小寫
(符合匹配標(biāo)準(zhǔn)的字符,字體顏色會(huì)變?yōu)榧t色)


實(shí)例演示

(1)查找出特定字符“the” 所在位置

[root@localhost ~]# grep -n 'the' /opt/httpd.conf

shell腳本之正則表達(dá)式(一)---grep、egrep


(2)反向查找不包含“the”字符的行

[root@localhost~]# grep -vn 'the' /opt/httpd.conf

shell腳本之正則表達(dá)式(一)---grep、egrep


2.利用中括號(hào)“[ ]”來查找集合字符
(1)查找“shirt”與“short”這兩個(gè)字符串,“[]”中無論有幾個(gè)字符,都僅代表一個(gè)字符,也就是說“[io]”表示匹配“i”或者“o”。

[root@localhost ~]# grep -n 'sh[io]rt' /opt/httpd.conf

shell腳本之正則表達(dá)式(一)---grep、egrep

(2)查找重復(fù)單個(gè)單詞字符

[root@localhost ~]# grep -n 'oo' /opt/httpd.conf

shell腳本之正則表達(dá)式(一)---grep、egrep

(3)通過集合字符的反向選擇“[^]”來實(shí)現(xiàn)查找“oo”前面不是“R”的字符串

[root@localhost ~]# grep -n '[^R]oo' /opt/httpd.conf

shell腳本之正則表達(dá)式(一)---grep、egrep

(4)查找“oo”前面存在小寫或大寫字母,其中“a-z”表示小寫字母,“A-Z”表示大寫字母

[root@localhost ~]# grep -n '[^a-z]oo' /opt/httpd.conf      //小寫字母

shell腳本之正則表達(dá)式(一)---grep、egrep

[root@localhost ~]# grep -n '[^A-Z]oo' /opt/httpd.conf   //大寫字母

shell腳本之正則表達(dá)式(一)---grep、egrep

(5)查找包含數(shù)字的行

[root@localhost ~]# grep -n '[0-9]' /opt/httpd.conf

shell腳本之正則表達(dá)式(一)---grep、egrep


3.查找行首“^”與行尾字符“$”
(1)查找以root開頭的行

[root@localhost ~]# grep -n '^root' /etc/passwd

shell腳本之正則表達(dá)式(一)---grep、egrep

(2)查找以bash結(jié)尾的行

[root@localhost ~]# grep -n 'bash$' /etc/passwd

shell腳本之正則表達(dá)式(一)---grep、egrep

(3)查詢以小寫或大寫字母開頭的行
小寫字母開頭的行可以通過“^[a-z]”規(guī)則來過濾,查詢大寫字母開頭的行使用“^[A-Z]”規(guī)則,查詢不以字母開頭的行使用“^[^a-zA-Z]”規(guī)則。

[root@localhost ~]# grep -n '^[a-z]' /etc/passwd

shell腳本之正則表達(dá)式(一)---grep、egrep

(4)查詢以問號(hào)?結(jié)尾的行,需要使用轉(zhuǎn)義字符“\”將具有特 殊意義的字符轉(zhuǎn)化成普通字符

[root@localhost ~]# grep -n '\?$' /opt/httpd.conf

shell腳本之正則表達(dá)式(一)---grep、egrep
(5)查詢一空白行,使用^$

[root@localhost ~]# grep -n '^$' /opt/httpd.conf

shell腳本之正則表達(dá)式(一)---grep、egrep

4.查找任意一個(gè)字符“.”與重復(fù)字符“*”
(1)查找以w開頭d結(jié)尾的字符串

[root@localhost ~]# grep -n 'w..d' /opt/httpd.conf

shell腳本之正則表達(dá)式(一)---grep、egrep

(2)查詢包含至少兩個(gè) o 以上的字符串,可用星號(hào)元字符.代表的是重復(fù)零個(gè)或多個(gè)前面的單字符,所以凡是包含 o、oo、ooo、ooo,等的資料都符合標(biāo)準(zhǔn)。

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

shell腳本之正則表達(dá)式(一)---grep、egrep

(3)查詢以 w 開頭 d 結(jié)尾,其中間包含至少一個(gè) o 的字符串

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

shell腳本之正則表達(dá)式(一)---grep、egrep

(4)查詢以 w 開頭 d 結(jié)尾,中間的字符可有可無的字符串。

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

shell腳本之正則表達(dá)式(一)---grep、egrep

(5)查詢?nèi)我鈹?shù)字所在行

[root@localhost ~]# grep -n '[0-9][0-9]*' /opt/httpd.conf

shell腳本之正則表達(dá)式(一)---grep、egrep


5.查找連續(xù)字符范圍{ }
在使用“{}”字符時(shí),需要利用轉(zhuǎn)義字符“\”,將“{}”字符轉(zhuǎn)換成普通字符。
(1)查詢兩個(gè)o的字符

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

shell腳本之正則表達(dá)式(一)---grep、egrep

(2)查詢以 w 開頭以 d 結(jié)尾,中間包含 2~3個(gè) o 的字符串

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

shell腳本之正則表達(dá)式(一)---grep、egrep

(3)查詢以 w 開頭以 d 結(jié)尾,中間包含 2 以上 o 的字符串

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

shell腳本之正則表達(dá)式(一)---grep、egrep


基礎(chǔ)正則表達(dá)式常見元字符

元字符 作用
^匹配輸入字符串的開始位置。在方括號(hào)表達(dá)式中使用,表示不包含該字符集合。
$匹配輸入字符串的結(jié)尾位置。
.匹配除“\r\n”之外的任何單個(gè)字符
\將下一個(gè)字符標(biāo)記為特殊字符、原義字符、向后引用、八進(jìn)制轉(zhuǎn)義符。
*匹配前面的子表達(dá)式零次或多次。要匹配“”字符,請(qǐng)使用“\”
[ ]字符集合。匹配所包含的任意一個(gè)字符。例如,“[abc]”可以匹配“plain”中的“a”
^ ]賦值字符集合。匹配未包含的一個(gè)任意字符。
[n1-n2]字符范圍。匹配指定范圍內(nèi)的任意一個(gè)字符。
{n}n 是一個(gè)非負(fù)整數(shù),匹配確定的 n 次
{n,}n 是一個(gè)非負(fù)整數(shù),至少匹配 n 次。
n,mm 和n 均為非負(fù)整數(shù),其中 n<=m,最少匹配 n 次且最多匹配 m 次

擴(kuò)展正則表達(dá)式

通常情況下會(huì)使用基礎(chǔ)正則表達(dá)式就已經(jīng)足夠了,但有時(shí)為了簡化整個(gè)指令,需要使用范圍更廣的擴(kuò)展正則表達(dá)式。此外grep 命令僅支持基礎(chǔ)正則表達(dá)式,如果使用擴(kuò)展正則表達(dá)式,需要使用 egrep 命令。egrep 命令與 grep 命令的用法基本相似。egrep 命令是一個(gè)搜索文件獲得模式,使用該命令可以搜索文件中的任意字符串和符號(hào),也可以搜索一個(gè)或多個(gè)文件的字符串,一個(gè)提示符可以是單個(gè)字符、一個(gè)字符串、一個(gè)字或一個(gè)句子。


擴(kuò)展正則表達(dá)式常見元字符

元字符 作用
+重復(fù)一個(gè)或者一個(gè)以上的前一個(gè)字符
?零個(gè)或者一個(gè)的前一個(gè)字符
l使用或者(or)的方式找出多個(gè)字符
()查找“組”字符串
()+辨別多個(gè)重復(fù)的組

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

文章標(biāo)題:shell腳本之正則表達(dá)式(一)---grep、egrep-創(chuàng)新互聯(lián)
網(wǎng)站URL:http://muchs.cn/article24/csgece.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供用戶體驗(yàn)、App設(shè)計(jì)、企業(yè)網(wǎng)站制作、Google面包屑導(dǎo)航軟件開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站優(yōu)化排名