欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

【我的Linux,我做主!】通配符和正則表達(dá)式深層解析

目錄:
(一)了解通配符和正則的作用
(二)通配符的使用
(三)正則表達(dá)式的使用
(四)擴(kuò)展正則表達(dá)式的使用

成都創(chuàng)新互聯(lián)專注于憑祥企業(yè)網(wǎng)站建設(shè),成都響應(yīng)式網(wǎng)站建設(shè)公司,商城網(wǎng)站制作。憑祥網(wǎng)站建設(shè)公司,為憑祥等地區(qū)提供建站服務(wù)。全流程定制開發(fā),專業(yè)設(shè)計,全程項目跟蹤,成都創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務(wù)


(一)了解通配符和正則的作用
(1.1)在我們?nèi)粘5墓ぷ髦校覀兌紩褂玫酵ㄅ浞蛘哒齽t表達(dá)式。通配符是一種特殊語句,主要有星號(*)和問號(?),用來模糊搜索文件。當(dāng)查找文件夾時,可以使用它來代替一個或多個真正字符;當(dāng)不知道真正字符或者懶得輸入完整名字時,常常使用通配符代替一個或多個真正的字符。正則表達(dá)式是計算機(jī)科學(xué)的一個概念,正則表達(dá)式通常被用來檢索、替換那些符合某個模式的文本,正則表達(dá)式是對字符串操作的一種邏輯公式,就是用事先定義好的一些特定字符、及這些特定字符的組合,組成一個“規(guī)則字符串”,這個“規(guī)則字符串”用來表達(dá)對字符串的一種過濾邏輯。
(1.2)不管是通配符還是正則表達(dá)式,其功能都是實現(xiàn)模糊匹配,用來匹配某一類東西,并不是匹配具體的某一個值。通配符一般用于shell中,正則表達(dá)式一般用于其他語言。


(二)通配符的使用
(2.1)首先第一個是“[]”中括號[list],匹配的是list中的任意單一字符。例如a[xyz]b,a與b之間必須也只能有一個字符,但只能是x或y或z,如:axb,ayb,azb
(2.2)第二個是“[c1-c2]”,用來表示字符的范圍,匹配c1-c2的任意單一字符,如[0-9]或[a-z]。例如“a[0-9]b”表示的是0到9之間必須也只能有一個字符,如:a0b、a1b、a2b、a3b、a4b、a5b、a6b、a7b、a8b、a9b
注意:如果我們需要匹配的是單個字母,且不分大小寫,則我們可以使用“[a-zA-Z]”來進(jìn)行表示。
(2.3)第三個是“[!c1-c2]或[^c1-c2]”,匹配的是不在c1-c2的任意字符。例如a[!0-9]b,a[^0-9]b表示a與b之間只有一個字符,并且不是數(shù)字0-9之間的字符,符合要求的有:acb、adb
(2.4)示例:我們在vms002主機(jī)上創(chuàng)建一個rh224目錄,然后在rh224目錄中創(chuàng)建相關(guān)的文件:11111、a111、a_111、a22、lwang、lWang、rh224。接著我們查詢第一個字符時a到z之間的,第二個字符是非數(shù)字的,后面的字符都是任意的。
# mkdir rh224
# touch 11111 a111 a_111 a22 lwang lWang rh224
# ls [a-z][^0-9]*---查詢第一個字符時a到z之間的,第二個字符是非數(shù)字的,后面的字符都是任意的
【我的Linux,我做主!】通配符和正則表達(dá)式深層解析
【我的Linux,我做主!】通配符和正則表達(dá)式深層解析
(2.5)示例:接著我們的需求是在rh224目錄下找到格式為第一個字符是a到z之間,第二個字符是a或者“-”或者z三個字符中的任意一個,后面的字符是任意的。這樣我們就可以符合要求的文件名a-1
# touch a-1
# ls [a-z][a-z]*
【我的Linux,我做主!】通配符和正則表達(dá)式深層解析
(2.6)第四個是精確指定字符的大小寫“[[:upper:]]”、“[[:lower:]]”,由于我們使用[a-z]的時候可能會匹配出a到z和A到Z之間的字符,大小寫并不能精確匹配,所以我們可以使用“[[:upper:]]”表示純大寫的字符,我們可以使用“[[:lower:]]”表示純小寫的字符。
# ls [[:upper:]]*---查詢所有純大寫字目開頭的文件名
# ls [[:lower:]]*---查詢所有純小寫字母開頭的文件名
【我的Linux,我做主!】通配符和正則表達(dá)式深層解析
(2.7)當(dāng)然第四個精確指定字符中還是有其他表示特定字符的方式的:“[[:alpha:]]”表示的是只匹配字母,“[[:alnum:]]”表示的是匹配字母和數(shù)字,“[[:digit:]]”表示的是匹配純數(shù)字。
(2.8)示例:現(xiàn)在我們的系統(tǒng)中沒有marry用戶,我們首先創(chuàng)建一個marry用戶,并且指定在根下創(chuàng)建marry的家目錄(圖1-5)。然后我們將marry家目錄刪除,此時我們切換到marry用戶后發(fā)現(xiàn)由于沒有家目錄,所以切換后是異常的狀態(tài)(圖1-6),此時我們在/etc/default/useradd配置文件中,查詢到用戶家目錄的模板文件在/etc/skel的目錄中(圖1-7),我們將/etc/skel中的所有模板文件都拷貝到marry家目錄下,并修改了屬主和屬組的相關(guān)信息,此時便可以正常的進(jìn)行marry用戶的切換了(圖1-8)。
# useradd -d /marry marry---創(chuàng)建一個marry用戶,并且指定在根下創(chuàng)建marry的家目錄
# rm -rf /marry/---刪除marry的家目錄
# vim /etc/default/useradd---查詢/etc/default/目錄下的useradd文件
# cp -a /etc/skel/.[^.]* /marry/---將/etc/skel/目錄下的所有以“.”開頭,第二個字符由于是“[]”所以必須要存在而且是非“.”號,后面跟任意字符的文件全部拷貝到/marry家目錄下,skel表示骨架、框架(圖1-8)
# chown -R marry.marry /marry/---修改/marry家目錄的所有者和所屬組都為marry(圖1-8)
【我的Linux,我做主!】通配符和正則表達(dá)式深層解析
【我的Linux,我做主!】通配符和正則表達(dá)式深層解析
【我的Linux,我做主!】通配符和正則表達(dá)式深層解析
【我的Linux,我做主!】通配符和正則表達(dá)式深層解析
(2.9)第五個是“?”問號,匹配的是任意一個字符。例如在rh224目錄中,我們查詢“[a-z]????”,表示的是查詢第一個字符是字母構(gòu)成,后面會有四個任意的字符構(gòu)成的文件名。
注意:“?”問號是不能匹配到表示隱藏文件的“.”點(diǎn)號的。即表示如果現(xiàn)在系統(tǒng)中有“.aa”文件,我們使用“???”是不能匹配出這個隱藏文件的,如果我們想要匹配出這類隱藏文件則應(yīng)該開啟全局通配符處理。
# ls [a-z]????---查詢第一個字符是字母構(gòu)成,后面會有四個任意的字符構(gòu)成的文件名
【我的Linux,我做主!】通配符和正則表達(dá)式深層解析
(2.10)第六個是“*”星號,表示匹配任意長度的任意字符。例如我們將所有文件名以a字母開頭,且后面是任意字符的文件都刪除掉
# touch aaa bb cc aa2---創(chuàng)建如下的四個文件
# rm -rf a*---將所有文件名以a字母開頭,后面是任意字符的文件都刪除掉
【我的Linux,我做主!】通配符和正則表達(dá)式深層解析
(2.11)第七個是“\”反斜線,表示轉(zhuǎn)義符,有時候我們在當(dāng)前系統(tǒng)中安裝vsftp軟件的時候我們可能會使用“# yum install vsftp*”進(jìn)行安裝,但是由于我們在執(zhí)行系統(tǒng)命令的時候,首先是在shell進(jìn)程中運(yùn)行然后才到達(dá)YUM倉庫中去進(jìn)行相關(guān)的軟件包查找工作。即我們在執(zhí)行“vsftp*”的時候,shell會首先對“vsftp*”進(jìn)行shell解析,查找當(dāng)前目錄中是否有符合“vsftp*”格式的文件,如果現(xiàn)在我們的當(dāng)前目錄中存在著一個文件vsftp123,則此時shell會將“vsftp*”解析成“vsftp123”,然后再到Y(jié)UM倉庫中去查找“vsftp123”的軟件包進(jìn)行安裝,而這樣的情況并不是我們所希望的。所以我們在shell中執(zhí)行安裝軟件包的命令時,一般是建議使用轉(zhuǎn)義符“# yum install vsftp\*”這樣的格式進(jìn)行安裝是比較好的,這樣就可以防止shell對我們所使用的通配符進(jìn)行解析的情況產(chǎn)生。
# yum install vsftp\*---使用轉(zhuǎn)義符對通配符進(jìn)行轉(zhuǎn)義,防止shell對通配符進(jìn)行解析
# yum install 'vsftp*'---也可以使用單引號來進(jìn)行轉(zhuǎn)義,防止shell對通配符進(jìn)行解析
(2.12)需要注意的是,我們在創(chuàng)建文件的時候,文件名是不可能包含“/”的,因為有“/”就是代表創(chuàng)建了一個目錄。
# touch rh224/cc---此時“rh224/cc”并不是表示一個文件名,而是表示在rh224/目錄下創(chuàng)建一個cc文件
【我的Linux,我做主!】通配符和正則表達(dá)式深層解析


(三)正則表達(dá)式的使用
(3.1)正則表達(dá)式是用來匹配字符串的,針對文件內(nèi)容的文本過濾工具,大都用到正則表達(dá)式,如vim、grep、awk、sed等。正則表達(dá)式和我們上面說的通配符實現(xiàn)的效果都是一樣的,是為了實現(xiàn)查詢信息的模糊匹配。
(3.2)第一個“^”表示開頭,例如我們先將/etc/passwd文件拷貝到當(dāng)前目錄中,然后查詢passwd文件中以root字符開頭的行,此時可以使用“^”來進(jìn)行標(biāo)識。
# grep ^root passwd
【我的Linux,我做主!】通配符和正則表達(dá)式深層解析
(3.3)第二個“$”表示行末,我們先將passwd文件中的相關(guān)行進(jìn)行設(shè)計一下,然后查找每一行行末是“bash”字符的行。
# grep bash$ passwd---查詢行末字符是bash字符的所有行
【我的Linux,我做主!】通配符和正則表達(dá)式深層解析
【我的Linux,我做主!】通配符和正則表達(dá)式深層解析
(3.4)第三個“\<”或者“\b”表示錨定的是單詞的開頭,我們先來創(chuàng)建一個aa.txt的文件,然后我們查詢“\<tom”以tom字符開頭的所有行。
# grep '\<tom' aa.txt---查詢以tom字符開頭的所有行
# grep '\btom' aa.txt---查詢以tom字符開頭的所有行
【我的Linux,我做主!】通配符和正則表達(dá)式深層解析

【我的Linux,我做主!】通配符和正則表達(dá)式深層解析
(3.5)第四個“\>”或者“\b”表示錨定的是單詞的末尾,在aa.txt文件中,我們查詢“tom\>”以tom字符結(jié)束的所有行(圖1-17)。如果我們希望查詢出所有以tom為單詞獨(dú)立存在的行時,我們可以同時使用“\<”和“\>”符號(圖1-18)。
# grep 'tom\>' aa.txt---查詢“tom\>”以tom字符結(jié)束的所有行
# grep 'tom\b' aa.txt---查詢“tom\b”以tom字符結(jié)束的所有行
# grep '\<tom\>' aa.txt---查詢出所有以tom為單詞獨(dú)立存在的行
# grep '\btom\b' aa.txt ---查詢出所有以tom為單詞獨(dú)立存在的行
【我的Linux,我做主!】通配符和正則表達(dá)式深層解析
【我的Linux,我做主!】通配符和正則表達(dá)式深層解析
(3.6)示例:現(xiàn)在我們希望查詢SELinux中對端口設(shè)置的上下文信息,如果需要過濾具體的端口號的信息,則可以使用“\<\>”來指定獨(dú)立的單詞信息,例如過濾出只包含80端口上下文的行,如果我們只是使用“grep 80”過濾出的信息是不正確的(圖1-19),我們應(yīng)該使用“grep '\<80\>'”才是正確的(圖1-20)。
# semanage port -l | grep 80---查詢當(dāng)前系統(tǒng)中所有包含80端口上下文的信息
# semanage port -l | grep '\<80\>'---查詢當(dāng)前系統(tǒng)中只含有80端口上下文的信息行
【我的Linux,我做主!】通配符和正則表達(dá)式深層解析
【我的Linux,我做主!】通配符和正則表達(dá)式深層解析
(3.7)第五個“.”表示單個任意字符,和通配符中的“?”問號的意義一致。例如我們想要匹配出aa.txt文件中to單詞后跟任意一個字符的所有符合要求的行(圖1-21)。如果我們希望“.”符號沒有模糊查詢的意思,就代表它本身的字符的意思,則我們可以使用“\”作為轉(zhuǎn)義符,這樣就可以直接查詢出包含“to.”字樣的行(圖1-22)。
# grep 'to.' aa.txt---查詢出所有符合to單詞后還會跟一個任意字符的行
# grep 'to\.' aa.txt---使用轉(zhuǎn)義符,直接查詢包含“to.”字符的行
【我的Linux,我做主!】通配符和正則表達(dá)式深層解析
【我的Linux,我做主!】通配符和正則表達(dá)式深層解析
(3.8)第六個“[]”,表示的是匹配指定范圍內(nèi)的任意單個字符。
(3.9)第七個“[^]”,表示的是匹配指定范圍外的任意單個字符。
(3.10)分組概念
(3.10.1)第八個“\(\)”,表示的是分組。例如“\(ab\)*”表示ab單詞可以出現(xiàn)0次、1次或任意次。我們創(chuàng)建一個test.txt文件(圖1-22-1),然后我們使用“\(ab\)*”將符合條件的都篩選出來(圖1-22-2)。
# grep "(ab)*" test.txt
【我的Linux,我做主!】通配符和正則表達(dá)式深層解析
【我的Linux,我做主!】通配符和正則表達(dá)式深層解析
(3.10.2)我們創(chuàng)建一個文件test3.txt,然后編輯如下的內(nèi)容,我們查詢“l(fā)..e”與“l(fā)..e”之間有任意字符任意次的所有符合條件的行,此時我們發(fā)現(xiàn)test3.txt文件中的第1行至第4行的內(nèi)容都被篩選出來了(圖1-22-4)。此時我們?nèi)绻M霈F(xiàn)的行中前后兩個字符是完全一致的才符合要求并顯示,即test3.txt文件中的第1行和第3行顯示出來,此時我們需要使用后項引用的方式來完成要求(圖1-22-5)。
分組:\(\)
后項引用:
\1:引用第一個左括號以及與之對應(yīng)的右括號所包括的所有內(nèi)容
\2:引用第二個左括號以及與之對應(yīng)的右括號所包括的所有內(nèi)容
\3:引用第三個左括號以及與之對應(yīng)的右括號所包括的所有內(nèi)容
# grep 'l..e.*l..e' test3.txt---查詢“l(fā)..e”與“l(fā)..e”之間有任意字符任意次的所有符合條件的行
# grep '\(l..e\).*\1' test3.txt---查詢例如“l(fā)ike”開頭與“l(fā)ike”結(jié)尾的前后對應(yīng)行
【我的Linux,我做主!】通配符和正則表達(dá)式深層解析
【我的Linux,我做主!】通配符和正則表達(dá)式深層解析
【我的Linux,我做主!】通配符和正則表達(dá)式深層解析
(3.10.3)示例:我們在當(dāng)前目錄下創(chuàng)建一個inittab的文件,然后我們查詢文件中行中出現(xiàn)了任意一個數(shù)字,在行尾結(jié)束時也出現(xiàn)了這個相同的數(shù)字的行,將這個行顯示在屏幕上。
# grep '\([0-9]\).*\1$' inittab---其中“\([0-9]\)”表示行中出現(xiàn)的任意一個數(shù)字,“\1$”表示在行尾結(jié)束時也出現(xiàn)了這個相同的數(shù)字
【我的Linux,我做主!】通配符和正則表達(dá)式深層解析
【我的Linux,我做主!】通配符和正則表達(dá)式深層解析
(3.11)我們在使用grep命令的時候可以使用“-A”、“-B”、“-C”參數(shù),其中-A表示的是after后面,其中-B表示的是before前面,其中-C表示的是context上下文。
# grep -A 2 '^core id' /proc/cpuinfo---表示core id字符開頭行的后面的2行
# grep -B 2 '^core id' /proc/cpuinfo---表示core id字符開頭行的前面的2行
# grep -C 2 '^core id' /proc/cpuinfo---表示core id字符開頭行的上下文各2行
【我的Linux,我做主!】通配符和正則表達(dá)式深層解析
【我的Linux,我做主!】通配符和正則表達(dá)式深層解析
【我的Linux,我做主!】通配符和正則表達(dá)式深層解析


(四)擴(kuò)展正則表達(dá)式的使用
(4.1)以上我們所使用的正則表達(dá)式在進(jìn)行查詢的時候可以配合grep命令進(jìn)行使用“grep 表達(dá)式 file”。不過有些正則表達(dá)式grep命令并不支持,此時我們應(yīng)該使用“grep -E 表達(dá)式 file”或者“egrep 表達(dá)式 file”啟用擴(kuò)展的正則表達(dá)式進(jìn)行查詢。有時候還有一些正則表達(dá)式是擴(kuò)展的正則表達(dá)式也解決不了的,此時我們應(yīng)該使用“grep -P 表達(dá)式 file”即調(diào)用perl語言中的正則表達(dá)式進(jìn)行查詢。分割線擴(kuò)展正則表達(dá)式。
注意:egrep -o表示的是僅僅輸出查詢出的字符
(4.2)第一個“?”表示它前面出現(xiàn)的字符,出現(xiàn)0次或者1次?!皌o.?”表示的意思是to后會跟一個任意的字符,但是這樣任意的字符可能出現(xiàn)0次,也可能出現(xiàn)1次,所以此時aa.txt 文件中包括“to”在內(nèi)的所有行都是符合要求的。此時由于使用的“?”問號,所以我們需要使用擴(kuò)展的正則表達(dá)式egrep進(jìn)行匹配查詢。
# egrep 'to.?' aa.txt---其中to后會跟一個任意的字符,但是這樣任意的字符可能出現(xiàn)0次,也可能出現(xiàn)1次
【我的Linux,我做主!】通配符和正則表達(dá)式深層解析
(4.3)第二個“+”表示它前面的字符出現(xiàn)1次或者多次。此時我們查詢“to.+”表示的意思是在to單詞后面有一個任意字符,同時這個任意字符出現(xiàn)可能是1次,也可能出現(xiàn)多次,所以在aa.txt文件中除了第一行不符合要求,其他的行都是符合要求的。同時我們需要使用擴(kuò)展的正則表達(dá)式egrep進(jìn)行匹配查詢。
# egrep 'to.+' aa.txt---也稱貪婪匹配,在to單詞后面有一個任意字符,同時這個任意字符出現(xiàn)可能是1次,也可能出現(xiàn)多次
【我的Linux,我做主!】通配符和正則表達(dá)式深層解析
(4.4)第三個“*”表示它前面的字符出現(xiàn)任意次數(shù)。此時我們查詢“to.*”表示匹配的是to單詞后有一個任意字符,并且這個任意字符出現(xiàn)任意次,包括0次、1次、任意次。所以此時aa.txt文件中所有行都是符合匹配的要求的。同時我們需要使用擴(kuò)展的正則表達(dá)式egrep進(jìn)行匹配查詢。
# egrep 'to.*' aa.txt---查詢匹配to單詞后有一個任意字符,并且這個任意字符出現(xiàn)任意次,包括0次、1次、任意次
【我的Linux,我做主!】通配符和正則表達(dá)式深層解析
(4.5)在模式匹配的過程中我們有兩個概念,第一個是貪婪匹配,第二個是懶惰匹配,默認(rèn)是工作在貪婪模式中。其中貪婪匹配表示的是盡可能多的向后面進(jìn)行匹配,例如“to.+”表示的是to單詞后會有一個任意字符,并且這個任意的字符至少是1個,最多可以任意的個數(shù),所以匹配的時候符合要求的行會盡可能的向后進(jìn)行匹配,同時我們需要使用擴(kuò)展的正則表達(dá)式egrep進(jìn)行匹配查詢(圖1-26)。而懶惰匹配表示的是在符合要求的情況下盡可能少的向后進(jìn)行匹配,例如“to.+?”表示的是to單詞后會有一個任意字符,“+”表示并且這個任意字符至少匹配一個,最多可以匹配任意的個數(shù),“?”表示前面的部分可以出現(xiàn)0次或者1次,所以此時就會按照最少符合要求的情況進(jìn)行懶惰匹配,同時我們需要使用擴(kuò)展的正則表達(dá)式“grep -P”進(jìn)行匹配查詢(圖1-27)。以上的應(yīng)用也是非常廣泛的,有時候我們在網(wǎng)站進(jìn)行信息抓取的時候我們希望從<p>標(biāo)志位開始的抓取,到</p>標(biāo)志位結(jié)束,此時如果我們使用貪婪匹配的模式進(jìn)行抓取,那么我們抓取的信息便包含a和b兩段內(nèi)容,如果我們使用懶惰匹配的模式進(jìn)行抓取,那么我們抓取的信息就只會包含a段的內(nèi)容(圖1-28)。
# egrep 'to.+' aa.txt---貪婪匹配,在to單詞后面有一個任意字符,同時這個任意字符出現(xiàn)可能是1次,也可能出現(xiàn)多次,同(3.9)
# grep -P 'to.+?' aa.txt---懶惰匹配,調(diào)用Perl語言支持的正則表達(dá)式,然后在匹配的過程中匹配最少符合要求的字符信息
【我的Linux,我做主!】通配符和正則表達(dá)式深層解析
【我的Linux,我做主!】通配符和正則表達(dá)式深層解析
【我的Linux,我做主!】通配符和正則表達(dá)式深層解析
(4.6)第四個是在使用grep -P時的“{n,m}”,在使用常規(guī)grep時的“{n,m}”,表示的是匹配次數(shù)在n到m之間,包括邊界;其中g(shù)rep -P時的“{n}”或者常規(guī)grep時的“{n}”表示必須匹配n次;grep -P時的“{n,}”或者常規(guī)grep時的“{n,}”表示匹配n次及以上。
# grep -P 'tom{2}' aa.txt---查詢m出現(xiàn)兩次的所有符合字段
# grep -P 'tom{2,}' aa.txt---查詢m出現(xiàn)次數(shù)在兩次及兩次以上的所有符合字段
# grep 'tom{2,}' aa.txt---查詢m出現(xiàn)次數(shù)在兩次及兩次以上的所有符合字段,由于使用的是常規(guī)grep,所以需要用“{2,}”表示
【我的Linux,我做主!】通配符和正則表達(dá)式深層解析
(4.7)第五個是可以使用指定的字符表示特定類型的一類字符。
[[:alpha:]]:表示所有字母
[[:alnum:]]:表示字母與數(shù)字字符
[[:ascii:]]:表示ASCII字符
[[:blank:]]:表示空格或制表符
[[:cntrl:]]:表示ASCII控制符
[[:digit:]]:表示數(shù)字
[[:graph:]]:表示可見字符,非控制、非空格字符
[[:lower:]]:表示小寫字母
[[:print:]]:表示可打印字符
[[:punct:]]:表示標(biāo)點(diǎn)符號字符
[[:space:]]:表示空白字符,包括垂直制表符
[[:upper:]]:表示大寫字母
[[:xdigit:]]:十六進(jìn)制數(shù)字
(4.8)查詢實例
(4.8.1)示例:查詢IP地址,目前在我們的/var/log/messages文件主要保存的是系統(tǒng)的日志信息,其中也會有包含IP地址的字符信息,我們的需求是將其中所有IP地址格式的信息全部過濾出來。由于我們知道IP地址的格式可以是192.168.26.101,也可以是1.1.1.1,所以此時我們可以使用“[0-9]{1,3}”表示IP地址的一段信息,使用“{3}”表示數(shù)字和點(diǎn)組成的信息重復(fù)3次,最后再加上一段數(shù)字,此時我們便可以得到這樣一個表示IP地址格式的正則表達(dá)式:([0-9]{1,3}.){3}[0-9]{1,3}
# less /var/log/messages---查看包含系統(tǒng)日志的文件
# egrep '([0-9]{1,3}.){3}[0-9]{1,3}' /var/log/messages---查詢出日志中所有包含IP地址的所有字符信息的行
【我的Linux,我做主!】通配符和正則表達(dá)式深層解析
(4.8.2)示例:找出/boot/grub2/grub.cfg文件中1-255之間的數(shù)字。此時我們可以使用的正則表達(dá)式為:\<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>
# egrep '\<([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>' /boot/grub2/grub.cfg
【我的Linux,我做主!】通配符和正則表達(dá)式深層解析
(4.8.3)示例:粗略查詢所有符合IP地址格式要求的字符串,例如0.0.0.0至255.255.255.255這樣的格式,此時我們可以按照如下的方式進(jìn)行查詢。
# ifconfig | egrep -o '\<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>\.\<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>\.\<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>\.\<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>'
【我的Linux,我做主!】通配符和正則表達(dá)式深層解析
(4.8.4)示例:精確查詢所有格式為IP地址,并且符合五類IP地址中A類、B類、C類IP地址的所有適合的字段。
A類:1-127
B類:128-191
C類:192-223
# ifconfig | egrep '\<([1-9]|[1-9][0-9]|1[0-9]{2}|2[01][0-9]|22[0-3])\>(\.\<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-4])\>){2}\.\<([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-4])\>'
【我的Linux,我做主!】通配符和正則表達(dá)式深層解析
(4.9)一般我們在表示正則表達(dá)式中表達(dá)式的部分的時候是建議加上單引號將表達(dá)式引起來的。如果我們在系統(tǒng)中如果原先存在一個toz文件名的文件,此時我們對表達(dá)式不加單引號的情況下,首先會將查詢的“to?”發(fā)送到shell中進(jìn)行shell解析,此時sehll會對應(yīng)“to?”在系統(tǒng)中查找并解析成“toz”,然后再將“toz”發(fā)送到egrep中進(jìn)行解析,此時在aa.txt文件中是查詢不出來任何信息的。所以一般是需要將表示正則表達(dá)式中表達(dá)式的部分的時候是建議加上單引號這樣可以防止shell解析的情況發(fā)生。
# egrep 'to?' aa.txt---查詢aa.txt中to單詞后出現(xiàn)一個任意字符,這個任意字符出現(xiàn)0次或者1次
# egrep to\? aa.txt---和以上使用單引號的效果一致
【我的Linux,我做主!】通配符和正則表達(dá)式深層解析

—————— 本文至此結(jié)束,感謝閱讀 ——————

網(wǎng)頁標(biāo)題:【我的Linux,我做主!】通配符和正則表達(dá)式深層解析
標(biāo)題路徑:http://aaarwkj.com/article32/gjjdsc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站建設(shè)、網(wǎng)站建設(shè)、企業(yè)建站、標(biāo)簽優(yōu)化品牌網(wǎng)站制作、網(wǎng)站營銷

廣告

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

成都網(wǎng)頁設(shè)計公司
久久夜色精品国产高清不卡| 白白日韩欧美在线视频| 国产在线精品91系列| 亚洲一区二区三区熟女少妇| 亚洲乱码一区二区免费版| 国产精品粗又长一区| 91精品啪在线观看国产日本| 国产偷自一区二区三区| 欧美日韩一区二区三区666| 日本免费一区中文字幕| 日本熟妇色在线视频不卡| 亚洲欧美日韩国产亚洲欧美日韩国产 | 亚洲人妻一区二区三区久久精品| 国产精品一二三在线看| 中文字幕人妻少妇美臀| 中午字幕人妻少妇久久| 欧美午夜精品福利在线观看| 日韩二区三区精品视频| 十八禁一区二区在线观看| 粉嫩护士国产在线观看| 欧美香蕉在线观看视频| 日本成人午夜在线观看| 亚洲av永久精品桃色| 中国一区二区三区毛片| 天堂av在线观看播放| 亚洲精品一品区二品区三| 亚洲日本熟妇在线视频| 亚洲国产熟女导航网站视频| 天天躁日日躁夜夜躁夜夜| 欧美性大片免费在线观看| 国产三级在线观看视频| 香蕉视频网站欧美一区| 日韩国产精品激情一区| 亚洲综合日韩精品在线| 国产亚洲中文久久网久久| 亚洲一区二区三区女同| 自拍偷拍亚洲精品偷一| 最新日本人妻中文字幕| 四虎在线观看精品一区| 国产精品视频一区二区噜| 成人午夜福利影院在线|