亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫(kù)
最近訪問(wèn)板塊 發(fā)新帖
查看: 1549 | 回復(fù): 0
打印 上一主題 下一主題

在Linux下正則表達(dá)式和grep命令的使用 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2009-08-26 15:07 |只看該作者 |倒序?yàn)g覽
  1 什么是正規(guī)表示法:
  什么是正規(guī)表示式 ( Regular Exdivssion, 底下簡(jiǎn)稱 RE ) 呢?簡(jiǎn)單的說(shuō),在 Linux 的環(huán)境下,我們可以透過(guò)『字符串以及一些特殊字符的輔助』來(lái)進(jìn)行文字的比對(duì)工作,好來(lái)讓使用者篩選自己所需要數(shù)據(jù)。
  這些特殊的字符與搭配使用的工具,就構(gòu)成了正規(guī)表示法的主軸!
  例如 /etc/rc.d/init.d 這個(gè)目錄當(dāng)中好了,如果你要找到一個(gè)文件內(nèi)容含有 mail 這個(gè)字符串的文件名,要怎么搜尋呢?利用 grep 配合 mail 以及萬(wàn)用字符來(lái)搜尋所有的文件名『grep 'mail' /etc/rc.d/init.d/*』
  2 正規(guī)表示法對(duì)于系統(tǒng)管理員的用途:
  對(duì)于系統(tǒng)管理員來(lái)說(shuō),正規(guī)表示法則是一個(gè)『不可不學(xué)的好東西!』由于系統(tǒng)如果在繁忙的情況之下,每天產(chǎn)生的訊息信息會(huì)多到你無(wú)法想象的地步,而我們也都知道,系統(tǒng)的『錯(cuò)誤訊息登錄文件』 的內(nèi)容記載了系統(tǒng)產(chǎn)生的所有訊息,當(dāng)然,這包含你的系統(tǒng)是否被『入侵』的紀(jì)錄數(shù)據(jù)。但是系統(tǒng)的數(shù)據(jù)量太大了,要系統(tǒng)管理員的 你每天去看這么多的訊息數(shù)據(jù),想不瘋掉都很難,這個(gè)時(shí)候,我們就可以透過(guò)『正規(guī)表示法』的功能,將這些登錄的信息進(jìn)行處理,僅取出『錯(cuò)誤』的信息來(lái)進(jìn)行分析。
  3 正規(guī)表示法的廣泛用途:
  除了系統(tǒng)管理員之外,一大堆的軟件與設(shè)定都是支持正規(guī)表示法的,最常見(jiàn)的例子就是『郵件服務(wù)器』!您是否有常常收到電子郵件里最讓人詬病 的『廣告信件』呢?那如果我在 Server 端就將廣告信件給剔除的話,客戶端就會(huì)減少很多不必要的頻寬損耗了對(duì)吧!那么如何剔除廣告信件呢?由于廣告信件幾乎都有一定的標(biāo)題或者是內(nèi)容,因此,只要 每次有來(lái)信時(shí),都先將來(lái)信的標(biāo)題與內(nèi)容進(jìn)行特殊字符串的比對(duì),使用正規(guī)表示法發(fā)現(xiàn)有不良信件就予以剔除!目前兩大服務(wù)器軟件sendmail 與 postfix 都支持正規(guī)表示法的比對(duì)功能!很多的服務(wù)器軟件、以及套件都支持正規(guī)表示法。
  4 grep
  語(yǔ)法:[root @test /root ]# grep [-acinv] '搜尋字符串' filenames-list
  參數(shù)說(shuō)明:
  -a :將 binary 文件以 text 文件的方式搜尋數(shù)據(jù)
  -c :計(jì)算找到 '搜尋字符串' 的次數(shù)
  -i :忽略大小寫(xiě)的不同,所以大小寫(xiě)視為相同
  -n :順便輸出行號(hào)
  -v :反向選擇,亦即顯示出沒(méi)有 '搜尋字符串' 內(nèi)容的那一行!
  范例:
  [root @test /root]# grep 'root' /var/log/secure
  搜索 /var/log/secure 這個(gè)文件中包含 root 的行
  [root @test /root]# grep -v 'root' /var/log/secure
  搜索沒(méi)有 root 的行
  [root @test /root]# grep [A-Z]ANPATH /etc/man.config
  說(shuō)明:grep 是一個(gè)很常見(jiàn)的指令,最重要的功能就是進(jìn)行字符串?dāng)?shù)據(jù)的比對(duì)了,需要說(shuō)明的是『grep 在一個(gè)文件中查尋一個(gè)字符串時(shí),他是以"整行"為單位來(lái)數(shù)據(jù)的擷取的!』
  grep 是最簡(jiǎn)單的正規(guī)表示法搜尋指令之一,他并不支持一些更嚴(yán)謹(jǐn)?shù)恼?guī)表示法內(nèi)容,不過(guò),已經(jīng)相當(dāng)?shù)暮糜谩?
  例題一:找出這個(gè)文件里面含有 know 這個(gè)字符,并將行號(hào)列出來(lái):注意,大小寫(xiě)是不一樣的
  [root @test /root ]# grep -n 'know' regexp.txt
  例題二:找出這個(gè)文件里面含有 * 這個(gè)字符,并將行號(hào)列出來(lái):
  [root @test /root ]# grep -n '\*' regexp.txt
  例題三:我要將所有 know 不論大小寫(xiě)都列出來(lái),并列出行號(hào):
  [root @test /root]# grep -ni 'know' regexp.txt
  注意:類似的指令還有egrep、awk、gawk、sed等,將在后面詳細(xì)說(shuō)明
  5 正規(guī)表示法的特殊字符(charaters)與 egrep 指令
  特殊字符 表示意義
  ^word 待搜尋的字符在行首
  word$ 待搜尋的字符在行尾
  . 匹配任何一個(gè)可能的字符
  \ 跳脫符號(hào)將特殊字符變成普通字符
  ? 任何一個(gè)『?jiǎn)我弧蛔址?
  * 匹配模式中重復(fù)的字符
  
    列表中的字符
      [range] 列表中范圍內(nèi)的字符
      [^list] 反向選擇,與
      相反
        [^range] 反向選擇,與 [range]相反
        \{n\} 與前一個(gè)相同字浮連續(xù) n 個(gè)
        \{n,m\} 與前一個(gè)相同字浮連續(xù) n-m 個(gè)
        請(qǐng)?zhí)貏e留意的是,『正規(guī)表示法的特殊字符』與一般在指令列輸入指令的『萬(wàn)用字符』并不相同,例如,在萬(wàn)用字符當(dāng)中, * 代表的是 0 ~ 無(wú)限多個(gè)字符的意思,但是在正規(guī)表示法當(dāng)中, * 則是重復(fù)前一個(gè)字符的意思~使用的意義并不相同,不要搞混了!
        例題:在 /etc 底下,只要含有 XYZ 三個(gè)字符的任何一個(gè)字符的那一行就列出來(lái)
        grep [XYZ] /etc/*
        例題:我想要知道在 /etc 里面,只要句首是 w-z 的就將他印出來(lái)?
        grep ^[w-z] /etc/*
        6 diff比較兩個(gè)文件內(nèi)容是否有不一致的指令!
        語(yǔ)法:[root @test /root ]# diff file1 file2
        范例:[root @test /root]# diff index.htm index.html
        例子:ls –l   grep ‘^d’ 查詢子目錄
        注意:使用規(guī)則表達(dá)式要養(yǎng)成良好的習(xí)慣,就是在匹配模式的兩端加上‘’。這樣和shell的文件通配符號(hào)做區(qū)別
        7 充分規(guī)則表達(dá)式專用字符
        符號(hào) 執(zhí)行
        pattern1   pattern2 邏輯或
        (patten) 對(duì)模式進(jìn)行分組
        char+ 搜索前面字符的一個(gè)或者多個(gè)重復(fù)實(shí)例
        char? 搜索前面字符的一個(gè)或者0個(gè)實(shí)例
        例題:t+ 匹配一個(gè)或一個(gè)以上連續(xù)的t,如t tt ttt
        t? 匹配0個(gè)或1個(gè)t 如 t 或 ‘ ’
        “create   stream “ 和兩種模式的任一種進(jìn)行匹配
        重點(diǎn)回顧
        • shell文件匹配字符和規(guī)則表達(dá)式的區(qū)別
        shell文件匹配字符是用于匹配文件名
        正規(guī)表示法RE的用途主要是用來(lái)做為『搜尋』字符串之用,匹配的文件里面的內(nèi)容和用來(lái)過(guò)濾特殊訊息等用途;
        • 由于嚴(yán)謹(jǐn)度的不同,正規(guī)表示法之上還有更嚴(yán)謹(jǐn)?shù)难由煺?guī)表示法;
        • 正規(guī)表示法的處理方式,經(jīng)常是以『整行』或稱為『整段』來(lái)進(jìn)行處理的;
        • grep 與 egrep 在正規(guī)表示法里面是很常見(jiàn)的兩支程序,其中, egrep 可以用不同的模式去匹配,以及支持更嚴(yán)謹(jǐn)?shù)恼?guī)表示法的語(yǔ)法。

          舉例二則:
          1)grep -v ^# /etc/vsftpd/vsftpd.conf
          ^#表示查找以“#”開(kāi)頭的,加上-v參數(shù)表示取反,即查找不是以“#”開(kāi)頭的。
          2)grep '^[^#]' /etc/vsftpd/vsftpd.conf
          []表示一個(gè)范圍,所有在這個(gè)范圍內(nèi)的都符合條件,
          [#]這是一個(gè)范圍只有一個(gè)字母“#”,
          [^#]表示除“#”以外的所有,
          ^[^#]表示非#開(kāi)頭的。
          上述兩條命令均是過(guò)濾以“#”開(kāi)頭的注釋,方便查看已經(jīng)配置的信息,但二者略有不同,配置文件若有空行,第一條命令仍然能夠輸出空行。


      本文來(lái)自ChinaUnix博客,如果查看原文請(qǐng)點(diǎn):http://blog.chinaunix.net/u/15605/showart_2037692.html
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國(guó)互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過(guò)ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP