1. 程式人生 > >正則grep用法

正則grep用法

選項 rep 英文 輸出符 包含 英文字母 去除 括號 支持

語法:grep 選項 ‘word’ filename
-c:打印符合要求的行數
-i:不區分大小寫
-n:在輸出符合要求的行的同時顯示行號
-v:打印不符合要求的行
-A:後跟一個數字n,表示打印符合要求的行以及下面n行
-B:後跟一個數字n,表示打印符合要求的行以及上面n行
-C:後跟一個數字n,表示打印符合要求的行以及上下各n行
-r:會把目錄下所有的文件全部遍歷
--color:把匹配到的關鍵詞用紅色標示
例子:

  1. 過濾出帶有某個關鍵詞的行並輸出行號
    grep -n ‘root’ 1.txt
  2. 過濾出不帶有某個關鍵詞的行並輸出行號
    grep -nv ‘root’ 1.txt
  3. 過濾出所有包含數字的行
    grep ‘[0-9]‘ 1.txt
  4. 過濾出所有不包含數字的行
    grep -v ‘[0-9]‘ 1.txt
  5. 去除所有以#開頭的行
    grep -v ‘^#‘ 1.txt
  6. 去除所有空行和以#開頭的行
    grep -v ‘^$‘ 1.txt|grep -v ‘^#‘
  7. 過濾出以英文字母開頭的行
    grep ‘^[a-zA-Z]‘ 1.txt
  8. 過濾出以非數字開頭的行
    grep -v ‘^[0-9]‘ 1.txt或者grep ‘^[^0-9]‘ 1.txt
  9. 過濾任意一個或多個字符
    grep ‘r.o‘ 1.txt;grep ‘rt‘ 1.txt ;grep ‘r.t‘ 1.txt
  10. 過濾出包含root的行以及下面一行
    grep -A1 ‘root‘ 1.txt
  11. 過濾出包含root的行以及上面一行
    grep -B1 ‘root‘ 1.txt
  12. 指定過濾字符次數
    grep ‘o{2}‘ 1.txt
  13. 把一個目錄下,過濾所有.php文檔中含有eval的行
    grep -r --include="
    .php" ‘eval‘ /data/
  14. 過濾兩個或多個關鍵詞
    grep -E ‘123|abc‘ filename #找出文件中包含123或者abc的行
    或者egrep ‘123|abc‘ filename
    或者awk ‘/123|abc/‘ filename

egrep=grep -E

  1. 匹配1個或者1個以上+前面的字符
    egrep ‘o+‘ 1.txt
  2. 匹配0個或者1個?前面的字符
    egrep ‘o?‘ 1.txt
  3. 匹配roo或者匹配body
    egrep ‘roo|body‘ 1.txt
  4. 用括號表示一個整體,下面例子會匹配roo或者ato
    egrep ‘r(oo)|(at)o‘ 1.txt
  5. 匹配1個或者多個oo
    egrep ‘(oo)+‘ 1.txt

.:表示任意一個字符
:表示0個或多個前面的字符
+:表示1個或多個+前面的字符
?:表示0個或1個?前面的字符
.*:表示任意個任意字符(包含空行)
註意:+和?grep不支持,egrep才支持。

正則grep用法