grep系及正則表達(dá)式的應(yīng)用-創(chuàng)新互聯(lián)

上周講了一個(gè)非常重要的內(nèi)容,老師反復(fù)叮囑一定要先寫關(guān)于這個(gè)的博客,那么我們就先講一下文本編輯工具里面的grep系及正則表達(dá)式元字符的使用,首先先講一下什么是grep系

創(chuàng)新互聯(lián)從2013年成立,先為大武口等服務(wù)建站,大武口等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為大武口企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。

grep系:grep、egrep、fgrep

其中最主要的還是grep

grep:Global search Regular Expression and Print out the line

   利用正則表達(dá)式進(jìn)行全局查找并將匹配的行顯示出來;

 如果想要理解這句話我覺得最好我們先看一下什么是正則表達(dá)式的元字符,我們用PATTERN來表示

 字符匹配類:

  .:表示匹配任意單個(gè)字符

  例:.abcd就是指的是以任意字符開頭后面是abcd的所有結(jié)果比如1abcd等

  []:匹配指定范圍內(nèi)的任意單個(gè)字符

  例:配合字符集使用,比如[:lower:]表示的就是匹配小寫字母中的任意一個(gè)字母

  [^]:匹配指定范圍以外的任意單個(gè)字符

  這個(gè)應(yīng)該不用舉例,和上一個(gè)相反就對(duì)了

  下列所有的字符集都可以放在中括號(hào)里面用于匹配單個(gè)字符

  [:lower:]:

  [:upper:]:

  [:alpha:]:

  [:digit:]:

  [:space:]:

  [:alnum:]:

  [:punct:]:

  [:blank:]:

  [:xdigit:]:所有的十六進(jìn)制數(shù)字;

  a-z:所有的小寫字符

  A-Z:所有的大寫字母

  0-9:標(biāo)識(shí)所有的十進(jìn)制字符

注意:這里的a-z指的就是所有的小寫字母,不再是之前所說的a,A,b,...,z

次數(shù)匹配:該類字符之前的那個(gè)字符可以出現(xiàn)的次數(shù)

*:其前面的字符可以出現(xiàn)任意次(0次、一次、多次)

例:a*bc就表示,bc前面可以出現(xiàn)任意次a,可以是0次,可以是1次,也可以是多次

\?:其前面的字符可有可無(0次或1次)

例:a\?bc就表示,bc前面只可以出現(xiàn)0次或1次a,注意:在?前加轉(zhuǎn)義字符\是為了防止shell把?當(dāng)作bash變量來處理,后面的\也是如此

\+:其前面的字符至少出現(xiàn)一次(1次或多次)

例:a\+bc就表示,bc前面至少出現(xiàn)一次a,也可以是多次

\{m\}:其前面的字符必須出現(xiàn)m次

例:a\{m\}bc表示,bc前面必須出現(xiàn)m次a

\{m,n\}:其前面的字符至少出現(xiàn)m次,至多出現(xiàn)n次

例:a\{m,n\}bc表示bc前面最少出現(xiàn)m次a,最多出現(xiàn)n次a

\{,n\}:其前面的字符至多出現(xiàn)n次

例:a\{,n\}bc表示bc前面最多可以出現(xiàn)n次a

\{m,\}:其前面的字符至少出現(xiàn)m次,×××

例:a\{m,\}bc表示bc前面至少出現(xiàn)m次a

在正則表達(dá)式中,表示任意長(zhǎng)度任意字符的方式:.*

例:.*abc就表示只要是以abc結(jié)尾,前面可以是任意長(zhǎng)度任意字符的東西

位置錨定字符:

 行錨定:

  行首錨定:^

  行尾錨定:$

 字錨定:

  字首錨定:\<或\b

  字尾錨定:\>或\b

  \b:舊版本中的錨定方法,建議不使用

關(guān)于行首錨定和字錨定我們?cè)诤竺娴睦}中再詳細(xì)解釋

  在正則表達(dá)式中,字是由非特殊字符組成的連續(xù)字符串。

 分組與引用字符:

 \(PATTERN\):將PATTERN匹配到的所有字符當(dāng)作一個(gè)不可分割的整體來處理

 分組很好理解,就是把由一串字符組成的東西當(dāng)作一個(gè)整體在計(jì)算機(jī)中尋找匹配

 在正則表達(dá)式引擎當(dāng)中,有一系列的內(nèi)置變量,這些變量會(huì)保存所有分組內(nèi)的字符信息,用于后向引用,這些變量依次是\1,\2,\3...

 PATTERN1\(PATTERN2\)PATTERN3\(PATTERN4\(PATERN5\))

 \1:PATTERN2

 \2:PATTERN4

 \3:PATTERN5

\1:第一組小括號(hào)中PATTERN匹配到的字符

\2:第二組小括號(hào)中PATTERN匹配到的字符

\3:第三組小括號(hào)中PATTERN匹配到的字符

關(guān)于引用,最簡(jiǎn)單的解釋就是你之前已經(jīng)使用過的字符串在后面的表達(dá)式中如果再用到的話,你可以不打出來,而只用一個(gè)符號(hào)來代替,第一個(gè)出現(xiàn)的就用\1表示,第二個(gè)字符就用\2表示,依次類推

例:請(qǐng)找出在/etc/passwd 中用戶的UID和GID相同的用戶賬戶;

首先我們來分析一下,用戶的UID和GID都是一串?dāng)?shù)字,所有我們想到可以用數(shù)字字符集來匹配,然后再來分析用戶的UID和GID一般都是由幾個(gè)數(shù)字組成,所以我們可以用\+來實(shí)現(xiàn),然后要求GID和UID一樣我們只需表示出GID,直接飲用表示UID就可以了,所以具體的命令格式應(yīng)該是下面這種格式。

grep '\(\<[[:digit:]]\+\>\).*\1' /etc/passwd

或:

\|

注意:或字符將其兩邊的字符串當(dāng)作整體對(duì)待;

A\|american:A或american

怎么理解把兩邊的字符串當(dāng)作整體來對(duì)待,就是比如上面這個(gè)例子A\|american表示A或american而不是A或a,然后接上merican

我們?cè)賮砜匆粋€(gè)例子:

請(qǐng)找出ifconfig執(zhí)行結(jié)果中數(shù)值在100-255之間的整數(shù);

第一位:1 2

第二位:0-9 0-4 5

第三位:0-9 0-9 0-5

這個(gè)問題難點(diǎn)不在PATTENR的表示,在于分析這個(gè)整數(shù)的特點(diǎn),只要分析明白了,這個(gè)問題就很好解決

ifconfig | grep '\<\(1[0-9][0-9]\|2[0-4][0-9]\25[0-5]\)\>'

說完正則表達(dá)式的元字符,我們接著來說grep系的具體用法

grep [OPTIONS] PATTERN [FILE...]

PATTERN:過濾條件,是由正則表達(dá)式元字符以及沒有特殊含義的文本字符組成

 正則表達(dá)式的元字符:

   會(huì)被正則表達(dá)式的引擎解釋為特殊含義;

   pcre--perl語言的正則表達(dá)式引擎;

   基本的正則表達(dá)式:BRE

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

grep默認(rèn)僅支持基本正則表達(dá)式;

egrep默認(rèn)支持?jǐn)U展正則表達(dá)式;

fgrep默認(rèn)不開啟正則表達(dá)式引擎;

 文本字符:

   只具備字符表面含義的那些字符;

常用選項(xiàng):

-i --ignore-case 忽略文本字符的大小寫

-v --invert-match 反向匹配,最終顯示的結(jié)果是PATTERN不能成功匹配的行

-c --count 計(jì)數(shù),統(tǒng)計(jì)匹配PATTERN的所有行數(shù)

-o, --only-matching 關(guān)閉貪婪模式,僅顯示PATTERN匹配的內(nèi)容

-q, --quiet, --silent 安靜模式,不輸出任何匹配結(jié)果,用于邏輯判斷

--color[=WHEN], --colour[=WHEN]:將匹配PATTERN的字符以特殊顏色高亮顯示

 --color+auto

-E, --extended-regexp 擴(kuò)展的正則表達(dá)式,grep -E相當(dāng)于egrep

-F, --fixed-strings, --fixed-regexp 基本的正則表達(dá)式,egrep -F 相當(dāng)于fgrep

-G, --basic-regexp:基本的正則表達(dá)式 egrep -G相當(dāng)于grep

-P, --perl-regexp:使用PCRE引擎

-A NUM, --after-context=NUM:在顯示匹配PATTERN的行的同時(shí)顯示其后面的NUM行

-B NUM, --before-context=NUM:在顯示匹配PATTERN的行的同時(shí)顯示其前面的NUM行

-C NUM, -NUM, --context=NUM:在顯示匹配PATTERN的行的同時(shí)顯示其前后的NUM行

關(guān)于grep的用法其實(shí)和命令的學(xué)習(xí)是差不多的,就是先記得滾瓜爛熟再配合操作鞏固就好了,接下來說egrep和fgrep就很好理解了,egrep相對(duì)于grep的區(qū)別就是在使用正則表達(dá)式元字符的時(shí)候可以不用轉(zhuǎn)義字符

egrep:

egrep [OPTIONS] PATTERN [FILE...]

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

字符匹配:

.

[]

[^]

次數(shù)匹配:

*

?

+

{}

{m,n}

{m,}

{,n}

位置錨定字符

^

$

\<,\b

\>,\b

分組和引用

()

\1,\2,\3

或:

|

fgrep:PATTERN中所有的字符都被當(dāng)作文本字符來處理

關(guān)于fgrep,只是把PATTENR解釋為純文本,不再用正則表達(dá)式對(duì)其進(jìn)行解釋,有利用提高搜索的速度

關(guān)于grep系和正則表達(dá)式元字符就介紹到這,這是很重要的文件處理只是,大家必須好好理解,吸收掌握。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+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)題名稱:grep系及正則表達(dá)式的應(yīng)用-創(chuàng)新互聯(lián)
文章來源:http://bm7419.com/article4/cdiooe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制網(wǎng)站、營(yíng)銷型網(wǎng)站建設(shè)、網(wǎng)站建設(shè)小程序開發(fā)、網(wǎng)站排名網(wǎng)站設(shè)計(jì)公司

廣告

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

h5響應(yīng)式網(wǎng)站建設(shè)