grep, egrep, fgrepgit
grep: 根據模式搜索文本,並將符合模式的文本行顯示出來。正則表達式
總結內容:ide
一、grep經常使用參數spa
二、grep正則表達式元字符集(基本用法)及高級用法遞歸
三、與正則相關的POSIX特殊字符類字符串
語法:grep [options]PATTERN [FILE...]it
grep中經常使用的幾個參數:io
-r 遞歸匹配class
-E 高級擴展功能與egrep功能類似擴展
-i 忽略大小寫差異
-v 反向匹配,只顯示不匹配的行
-w 若是被\<和\>引用,就把表達式作爲一個單詞搜索(單詞匹配)
如:netstat -ntlp |grep"\<80\>"
grep -w'main' /usr/include/*.h
-n 顯示匹配行及行號
-l 用於多文件查找,查詢多文件時只輸出包含匹配字符的文件名
grep -l -r -i -w 'filename_max' /usr/include/*.h
--color 高亮顯示匹配
-c 只打印匹配的行數,不顯示匹配的內容
-o:只顯示被模式匹配到的字符串
grep正則表達式元字符集(基本用法)
匹配次數(貪婪模式):
. 匹配一個非換行符的字符 如:'gr.p'匹配gr後接一個任意字符,而後是p。
* 匹配零個或多個先前字符 如:'*grep'匹配全部一個或多個空格後緊跟grep的行。
.* 一塊兒用來表示任意字符。
\? 匹配其前面的字符1次或0次。
x\{m\} 連續重複字符x,m次,如:'o\{5\}'匹配包含連續5個o的行。
x\{m,\} 連續重複字符x,至少m次,如:'o\{5,\}'匹配至少連續有5個o的行。
x\{m,n\} 連續重複字符x,至少m次,很少於n次,如:'o\{5,10\}'匹配連續5--10個o的行。
元字符:
[] 匹配一個指定範圍內的字符,如'[Gg]rep'匹配Grep和grep。
[^] 匹配一個不在指定範圍內的字符,如:'[^A-FH-Z]rep'匹配不包含A-R和T-Z的一個字母開頭,緊跟rep的行。
位置錨定:
^: 錨定行首,此字符後面的任意內容必須出如今行首
$: 錨定行尾,此字符前面的任意內容必須出如今行尾
\<或\b 錨定單詞的開始,如:'\<grep'匹配包含以grep開頭的單詞的行。
\>或\b 錨定單詞的結束,如'grep\>'匹配包含以grep結尾的單詞的行。
分組:
\(\)
\(ab\)*
後向引用
\1: 引用第一個左括號以及與之對應的右括號所包括的全部內容
\2:
\3:
\w 匹配一個文字和數字字符,也就是[A-Za-z0-9],如:'G\w*p'匹配以G後跟零個或多個文字或數字字符,而後是p。
\W w的反置形式,匹配一個非單詞字符,如點號句號等。\W*則可匹配多個。
\b 單詞鎖定符,如: '\bgrep\b'只匹配grep,即只能是grep這個單詞,兩邊均爲空格。
多個關鍵字查找
1.1 使用-e
grep -e 'stdio\.h' -e 'stdlib\.h' /usr/include/*.h
1.2 使用-f file
將關鍵字以行方式保存在一個文件中
1.3 使用元字符 \|
grep 'stdio\.h\|stdlib.h' /usr/include/*.h
關於egrep和grep -E的高級用法:
+ 匹配一個或多個先前的字符。如:'[a-z]+able',匹配一個或多個小寫字母后跟able的串,如loveable,enable,disable等。
? 匹配零個或多個先前的字符。如:'gr?p'匹配gr後跟一個或沒有字符,而後是p的行。 a|b|c 匹配a或b或c。如:grep|sed匹配grep或sed
() 分組符號,如:love(able|rs)ov+匹配loveable或lovers,匹配一個或多個ov。 x,x{m,},x{m,n} 做用同x\{m\},x\{m,\},x\{m,n\}
POSIX特殊字符類:能夠經過 man 7 glob查看。。。
[:alpha:] 文字字符 [A-Za-z]
[:digit:] 數字字符 [0-9]
[:graph:] 非空字符(非空格、控制字符)
[:lower:] 小寫字符 [a-z]
[:upper:] 大寫字符 [A-Z]
[:alnum:] [0-9a-zA-Z]
[:cntrl:] 控制字符
[:print:] 非空字符(包括空格)
[:punct:] 標點符號
[:space:] 全部空白字符(新行,空格,製表符),製表符還能夠用\t表示
[:xdigit:] 十六進制數字和字母(0-9,a-f,A-F)
咱們在用時要這樣用:[[:alpha:]],若是取反就是[^[:digit:]]
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
正則表達式:
Basic REGEXP:基本
Extended REGEXP:擴展
PS: 這裏再也不作詳細說明!!!!!!!!!
基本正則表達式:
.:
[]:
[^]:
次數匹配:
*:
\?: 0或1次
\{m,n\}:至少m次,至多n次;
.*:
錨定:
^:
$:
\<, \b:
\>, \b:
反向引用
\(\)
\1, \2, \3, ...
grep:使用基本正則表達式定義的模式來過濾文本的命令;
-i
-v
-o
--color
-E: 使用擴展正則表達式
-A #:
-B #:
-C #:
擴展正則表達式:
字符匹配:
.
[]
[^]
次數匹配:
*:
?:
+: 匹配其前面的字符至少1次
{m,n}
位置錨定:
^
$
\<
\>
分組:
():分組
\1, \2, \3, ...
或者
|: or
C|cat: Cat或cat, C或cat