0409 第十一次課:三劍客-grep

正則_grep

1、正則介紹

  • 正則就是一串有規律的字符串,包括各類特殊符號
  • 掌握正則對於編寫shell有很大幫助
  • 各類編程中都有正則,原理是同樣的

2、grep

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

  • grep用法正則表達式

    grep [-cinvrABC] 'word' filenameshell

    參數說明:express

    參數 說明
    -c 統計
    -n 顯示行
    -i 不區分大小寫
    -r 遍歷全部的子目錄
    -v 取反
    -A 後面跟數字,過濾出符合要求的行及下面n行
    -B 後面跟數字,過濾出符合要求的行及上面n行
    -C 後面跟數字,過濾出符合要求的行及上下n行
  • 經常使用示例編程

    一、匹配字符並顯示行號工具

    grep -n "root" /etc/passwd code

    二、匹配非"root"行並顯示行號blog

    grep -vn "root" /etc/passwdci

    三、匹配「root」行,並顯示下面兩行。文檔

    grep -A2 -n 'root' /etc/passwd

    四、匹配「root」行,並顯示上面兩行

    grep -B2 -n 'root' /etc/passwd

    五、匹配「root」行,並顯示上下兩行。

    grep -C2 -n 'root' /etc/passwd

    六、區分不大小寫顯示

    grep -i "A" 1.txt

    七、遍歷全部子目錄匹配

    查找root目錄下全部包含「root」的文件並顯示出來

    grep -r "root" /root/

  • grep正則操做

    一、匹配帶數字的行

    grep [0-9] /etc/passwd

    [0-9]就是0到9的意思

    二、匹配以非「#」開頭的行

    grep -v '^#' 1.txt

    三、匹配全部非數字

    grep '[^0-9]' 2.txt

    把^符號放在[]中就是非的意思。

    四、匹配全部非數字開頭的行

    grep '^[^0-9]' 2.txt

    五、匹配全部「rxot」的行,」"."表明任意一個字符

    grep "ro.t" 1.txt

    六、多個字母匹配

    grep 'o*o' passwd

    ""表明左邊的字符重複0-n次,也就是一個o也會匹配,ooo....多個也會匹配

    七、貪婪匹配

    grep '.*' 1.txt

    "."表示貪婪匹配,全部的都會被匹配。「.」表示一個任意字符,「」表明*左邊的字符重複0-n次,加在一塊兒就是匹配全部的就叫貪婪匹配。

    八、指定字符出現次數匹配

    grep 'o\{2\}' 1.txt

    {2}表示出現的次數,o是指指定的字符。\表示脫意

  • egrep

    在grep中使用+ {} () | 須要時\進行脫意。不想脫意可使用 egrep 或者 grep -E

  • 其它一些符號使用

    示例:

    一、()組合字符

    egrep '(oo){2}' 1.txt

    ()表示組合的意思

    二、「+」匹配

    +相似於*,不一樣的是+是1-n次,*是0-n次,以下圖單個o不會被匹配到

    三、「?」匹配

    ?表示左邊字符的重複次數爲0或者1

    grep 'o\?t' 1.txt

    四、 「|」 符號或者匹配

    '|'表示或者,好比root|tes就是匹配‘root’或者‘test’的意思

    grep -E 'root|test' 1.txt

  • 擴展

    過濾一個目錄下全部*.php文檔中含有eval的行。

    grep -r --include "*.php" 'eval' /usr/local/php/

相關文章
相關標籤/搜索