溫馨提示×

溫馨提示×

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

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

shell下正則表達(dá)式與其工具grep

發(fā)布時(shí)間:2020-07-18 05:09:37 來源:網(wǎng)絡(luò) 閱讀:1093 作者:mdd9502053669 欄目:編程語言

一.grep相關(guān)知識(shí)

1.grep

     grep (global search regular expression(RE) and print out the line,全面搜索正則表達(dá)式并把行打印出來)是一種強(qiáng)大的文本搜索工具,它能使用正則表達(dá)式搜索文本,并把匹配的行打印出來。

2.grep工作原理

     grep有兩種模式:Basic和Extend模式。

    在Basic模式下,命令直接grep ,其中的?、+、{}、|、()都被解釋為普通字符,如果要使用其的特殊意義,就必須對其用轉(zhuǎn)義字符進(jìn)行轉(zhuǎn)義。

    在Extend模式下,命令grep-E,其中的?、+、{}、|、()都是特殊字符,要匹配時(shí)必須用轉(zhuǎn)義字符將其轉(zhuǎn)義,變?yōu)槠胀ㄗ址?/span>

    grep命令在一個(gè)或多個(gè)文件中查找某個(gè)字符模式,如果這個(gè)模式中包含空格,就必須用引號(hào)把它括起來。grep命令中,模式可以是一個(gè)被引號(hào)括起來的字符串,也可以是單個(gè)詞。位于模式之后的所有單詞都被視為文件名。grep將輸出發(fā)送到屏幕,它不會(huì)對輸入文件進(jìn)行任何修改或變化。grep返回的退出狀態(tài)為0,表示成功。退出狀態(tài)為1,表示沒有找到。如果找不到指定的文件,退出狀態(tài)為2。

3.grep工具選項(xiàng)

  常用的grep選項(xiàng):

   grep-i:匹配時(shí)忽略字母大小寫

   grep-n:列出所有匹配的文本行,并顯示行號(hào)

   grep-v:只顯示不匹配的文本行

   grep-w:匹配整個(gè)單詞

   grep-x:匹配整個(gè)文本行

   grep-c:只打印匹配的文本行的行數(shù),不顯示匹配內(nèi)容

不常用的選項(xiàng):

   grep-l:只列出含有匹配的文本行的文件的文件名,不顯示匹配內(nèi)容

   grep-h:搜索多個(gè)文件時(shí),不顯示匹配文件名前綴

   grep-s:不顯示關(guān)于不存在或者無法讀取文件的錯(cuò)誤

   grep-r:遞歸搜索,不僅搜索當(dāng)前目錄,還搜索各級(jí)子目錄

   grep-q:禁止輸出任何匹配結(jié)果,而是以退出碼狀態(tài)的形式表示是否匹配成功,其中0表示找到了匹配的文本行

   grep-P:支持Perl正則表達(dá)式

   grep-F:不支持正則表達(dá)式,將模式按字面意義進(jìn)行匹配

   grep-b:打印匹配的文本行到文件投的偏移量,以字節(jié)為單位

二.正則表達(dá)式

   1.正則表達(dá)式:簡單來說就是通過描述某種規(guī)則,用這種規(guī)則去匹配信息。正則表達(dá)式一般要用單引號(hào)括起來

      正則表達(dá)式的三要素:數(shù)量限定符、位置限定符和字符類

   2.三要素

     1>字符類:描述匹配字符信息

     shell下正則表達(dá)式與其工具grep

     2>數(shù)量限定符:用來描述匹配字符數(shù)量

        其中?、+、*這三個(gè)較為重要

    shell下正則表達(dá)式與其工具grep

     3>用來描述匹配字符位置信息

         其中常用的是^ 和$

      shell下正則表達(dá)式與其工具grep

 三.正則表達(dá)式結(jié)合grep工具的具體例子

    1.數(shù)量限定符例子(常用的)

       1>使用? 前導(dǎo)單元出現(xiàn)0次或一次

        shell下正則表達(dá)式與其工具grep

       2>使用+   前導(dǎo)單元出現(xiàn)1次或多次

        shell下正則表達(dá)式與其工具grep

       3>使用*  緊跟前面的單元出現(xiàn)0次或多次

       shell下正則表達(dá)式與其工具grep

    2.字符類的例子(常用的)

       1>使用 . 匹配任意一個(gè)字符

         shell下正則表達(dá)式與其工具grep

       2>使用[] 匹配括號(hào)里任意一個(gè)字符

         shell下正則表達(dá)式與其工具grep

       3>使用^  匹配除中括號(hào)內(nèi)的任意一個(gè)字符 

          shell下正則表達(dá)式與其工具grep  

   3.位置限定符的例子 (常用的)

       以file文件里內(nèi)容為例

        shell下正則表達(dá)式與其工具grep

      1>^ 匹配行首位置

           以hel開頭的行

         shell下正則表達(dá)式與其工具grep

         

      2>$ 匹配行末位置 

           以t結(jié)尾的行

         shell下正則表達(dá)式與其工具grep

4.混合起來復(fù)雜的運(yùn)用

    file文件里存ip信息

     shell下正則表達(dá)式與其工具grep

     

   1>去粗略匹配一個(gè)ip地址 

     用命令匹配 

       shell下正則表達(dá)式與其工具grep

     由于grep-E是Extend模式,.是特殊字符,而要對其匹配就必須轉(zhuǎn)義

      shell下正則表達(dá)式與其工具grep   

     ()將正則表達(dá)式的一部分括起來組成一個(gè)單元,然后去匹配 

  2>寫一個(gè)shell腳本去匹配file里的ip

      shell腳本:

      shell下正則表達(dá)式與其工具grep

      count 用來計(jì)數(shù)匹配到的ip地址的個(gè)數(shù)

      運(yùn)行結(jié)果:

      shell下正則表達(dá)式與其工具grep


    

    

    

    

       

    

 

         


           

       

   

  




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

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI