• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            旅途

            如果想飛得高,就該把地平線忘掉

            在Linux下正則表達式和grep命令的使用

            正規表示法( Regular Exdivssion,RE )

            1 什么是正規表示法:

            什么是正規表示式 ( Regular Exdivssion, 底下簡稱 RE ) 呢?

            簡單的說,在 Linux? 的環境下,我們可以透過『字符串以及一些特殊字符的輔助』來進行文字的比對
            工作,好來讓使用者篩選自己所需要數據。

            這些特殊的字符與搭配使用的工具,就構成了正規表示法的主軸!

            例如 /etc/rc.d/init.d 這個目錄當中好了,如果你要找到一個文件內容含有 mail 這個字符串的文件名,要怎么搜尋呢?利用 grep 配合 mail 以及萬用字符來搜尋所有的文件名『grep 'mail' /etc/rc.d/init.d/*』

            2 正規表示法對于系統管理員的用途:

            對于系統管理員來說,正規表示法則是一個『不可不學的好東西!』由于系統如果在繁忙的情況之下,每天產生的訊息信息會 多到你無法想象的地步,而我們也都知道,系統的『錯誤訊息登錄文件』 的內容記載了系統產生的所有訊息,當然,這包含你的系統是否被『入侵』的紀錄數據。但是系統的數據量太大了,要系統管理員的 你每天去看這么多的訊息數據,想不瘋掉都很難,這個時候,我們就可以透過『正規表示法』的功能,將這些登錄的信息進行處理,僅取出『錯誤』的信息來進行分 析。

            3 正規表示法的廣泛用途:

            除了系統管理員之外,一大堆的軟件與設定都是支持正規表示法的,最常見的例子就是『郵件服務器』!您是否有常常收到電子郵件里最讓人詬病 的『廣告信件』呢?那如果我在 Server 端就將廣告信件給剔除的話,客戶端就會減少很多不必要的頻寬損耗了對吧!那么如何剔除廣告信件呢?由于廣告信件幾乎都有一定的標題或者是內容,因此,只要 每次有來信時,都先將來信的標題與內容進行特殊字符串的比對,使用正規表示法發現有不良信件就予以剔除!目前兩大服務器軟件sendmail 與 postfix 都支持正規表示法的比對功能!很多的服務器軟件、以及套件都支持正規表示法。

            4 grep

            語法:[root @test /root ]# grep [-acinv] '搜尋字符串' filenames-list

            參數說明:

            -a :將 binary 文件以 text 文件的方式搜尋數據

            -c :計算找到 '搜尋字符串' 的次數

            -i :忽略大小寫的不同,所以大小寫視為相同

            -n :順便輸出行號

            -v :反向選擇,亦即顯示出沒有 '搜尋字符串' 內容的那一行!

            范例:

            [root @test /root]# grep 'root' /var/log/secure

            搜索 /var/log/secure 這個文件中包含 root 的行

            [root @test /root]# grep -v 'root' /var/log/secure

            搜索沒有 root 的行

            [root @test /root]# grep [A-Z]ANPATH /etc/man.config

            說明:grep 是一個很常見的指令,最重要的功能就是進行字符串數據的比對了,需要說明的是『grep 在一個文件中查尋一個字符串時,他是以"整行"為單位來數據的擷取的!』

            grep 是最簡單的正規表示法搜尋指令之一,他并不支持一些更嚴謹的正規表示法內容,不過,已經相當的好用。

            例題一:找出這個文件里面含有 know 這個字符,并將行號列出來:注意,大小寫是不一樣的

            [root @test /root ]# grep -n 'know' regexp.txt

            例題二:找出這個文件里面含有 * 這個字符,并將行號列出來:

            [root @test /root ]# grep -n '\*' regexp.txt

            例題三:我要將所有 know 不論大小寫都列出來,并列出行號:

            [root @test /root]# grep -ni 'know' regexp.txt

            注意:類似的指令還有egrep、awk、gawk、sed等,將在后面詳細說明

            5 正規表示法的特殊字符(charaters)與 egrep 指令

            特殊字符 表示意義

            ^word 待搜尋的字符在行首

            word$ 待搜尋的字符在行尾

            . 匹配任何一個可能的字符

            \ 跳脫符號將特殊字符變成普通字符

            ? 任何一個『單一』字符

            * 匹配模式中重復的字符

            [list] 列表中的字符

            [range] 列表中范圍內的字符

            [^list] 反向選擇,與 [list] 相反

            [^range] 反向選擇,與 [range]相反

            \{n\} 與前一個相同字浮連續 n 個

            \{n,m\} 與前一個相同字浮連續 n-m 個

            請特別留意的是,『正規表示法的特殊字符』與一般在指令列輸入指令的『萬用字符』并不相同,例如,在萬用字符當中, * 代表的是 0 ~ 無限多個字符的意思,但是在正規表示法當中, * 則是重復前一個字符的意思~使用的意義并不相同,不要搞混了!

            例題:在 /etc 底下,只要含有 XYZ 三個字符的任何一個字符的那一行就列出來

            grep [XYZ] /etc/*

            例題:我想要知道在 /etc 里面,只要句首是 w-z 的就將他印出來?

            grep ^[w-z] /etc/*

            6 diff比較兩個文件內容是否有不一致的指令!

            語法:[root @test /root ]# diff file1 file2

            范例:[root @test /root]# diff index.htm index.html

            例子:ls –l | grep ‘^d’ 查詢子目錄

            注意:使用規則表達式要養成良好的習慣,就是在匹配模式的兩端加上‘’。這樣和shell的文件通配符號做區別

            7 充分規則表達式專用字符

            符號 執行

            pattern1 | pattern2 邏輯或

            (patten) 對模式進行分組

            char+ 搜索前面字符的一個或者多個重復實例

            char? 搜索前面字符的一個或者0個實例

            例題:t+ 匹配一個或一個以上連續的t,如t tt ttt

            t? 匹配0個或1個t 如 t 或 ‘ ’

            “create | stream “ 和兩種模式的任一種進行匹配

            重點回顧

            ? shell文件匹配字符和規則表達式的區別

            shell文件匹配字符是用于匹配文件名

            正規表示法RE的用途主要是用來做為『搜尋』字符串之用,匹配的文件里面的內容和用來過濾特殊訊息等用途;

            ? 由于嚴謹度的不同,正規表示法之上還有更嚴謹的延伸正規表示法;

            ? 正規表示法的處理方式,經常是以『整行』或稱為『整段』來進行處理的;

            ? grep 與 egrep 在正規表示法里面是很常見的兩支程序,其中, egrep 可以用不同的

            posted on 2007-09-25 00:34 旅途 閱讀(282) 評論(0)  編輯 收藏 引用 所屬分類: Linux Shell

            日韩欧美亚洲综合久久影院Ds | 久久久久久久久久免免费精品| 国产精品久久久福利| 国产精品美女久久久久av爽| 武侠古典久久婷婷狼人伊人| 亚洲精品无码久久久久sm| 天天综合久久久网| 亚洲乱码中文字幕久久孕妇黑人| 无码久久精品国产亚洲Av影片| 天天久久狠狠色综合| 国产成人无码精品久久久性色| 欧美综合天天夜夜久久| 国产精品中文久久久久久久 | 久久亚洲电影| 久久精品99无色码中文字幕| 久久夜色精品国产噜噜噜亚洲AV| 无码人妻少妇久久中文字幕| 久久久久久亚洲Av无码精品专口 | 久久香综合精品久久伊人| 99久久久国产精品免费无卡顿| 久久人爽人人爽人人片AV| 中文国产成人精品久久亚洲精品AⅤ无码精品| 国产午夜精品理论片久久影视| 久久国产精品成人影院| 亚洲伊人久久综合中文成人网| A级毛片无码久久精品免费| .精品久久久麻豆国产精品| 亚洲午夜久久久久妓女影院 | 久久国产精品无码网站| 亚洲午夜久久影院| 久久久久人妻一区精品| 国产99久久九九精品无码| 91精品无码久久久久久五月天| 国产精品一区二区久久| 国内精品久久久久影院一蜜桃| 久久亚洲私人国产精品vA| 狠狠色婷婷久久综合频道日韩 | 成人国内精品久久久久一区| 亚洲综合伊人久久综合| 99久久国产综合精品女同图片| 久久婷婷色香五月综合激情|