grep作為Linux中的文本編輯的三劍客之一,它的功能很強大,并不是虛傳,學會了grep在文本中找我們要找的的字符串總是能很輕易地找到,grep不僅僅就這一點功能,它在我們工作上也會對我們有很大的幫助。下面我來介紹一下grep的簡單的功能。
grep :文本過濾( 模式:pattern) 工具; (以行為單位的)
grep, egrep,[fgrep (不支持正則表達式 搜索) 搜索速度快]
grep: Global search REgular expression and Print outthe line.
作用:文本搜索工具,根據用戶指定的“模式”對目標文本逐行進行匹配檢查;打印匹配到的行;
模式:由正則表達式字符及文本字符所編寫的過濾條件
grep [OPTIONS] PATTERN [FILE…]
grep root /etc/passwd
grep "$USER" /etc/passwd
grep '$USER' /etc/passwd
grep `whoami` /etc/passwd
grep 命令選項
–color=auto: 對匹配到的文本著色顯示;
-v: 顯示不能夠被pattern 匹配到的行;
-i: 忽略字符大小寫
-n: : 顯示匹配的行號
-c: 統計匹配的行數
-o: 僅顯示匹配到的字符串;
-q: 靜默模式,不輸出任何
-A # :after, 后#行
-B #: before, 前#行
-C # :context, 前后各#行
-e :實現多個選項間的邏輯or (或)關系 -C # :conte
grep –e ‘cat ’ -e ‘dog’ file
-w :整行匹配整個單詞
-E :使用ERE
正則表達式引擎:
采用 不同 算法,檢查處理正則表達式的軟件模塊
PCRE(Perl Compatible Regular Expressions)
元字符分類:字符匹配、匹配次數、位置錨定、分組
man 7 regex
程序支持:grep, vim, less,nginx等
分兩類:
基本正則表達式:BRE
字符匹配:
. : 匹配任意單個字符;
[] : 匹配指定范圍內的任意單個字符
[^] :匹配指定范圍外的任意單個字符
[:digit:] 、[:lower:] 、[:upper:] 、[:alpha:] 、[:alnum:] 、[:punct:] 、[:space:]
匹配次數:用在要指定次數的字符后面,用于指定前面的字符要出現的次數
* :匹配前面的字符任意次,包括0次
貪婪模式:盡可能長的匹配
.* :任意長度的任意字符
\? :匹配其前面的字符0 或1次
\+ :匹配其前面的字符至少1次
\{n\} :匹配前面的字符n次
\{m,n\} :匹配前面的字符至少m 次,至多n次
\{,n\} :匹配前面的字符至多n次
\{n,\} :匹配前面的字符至少n次
位置錨定:定位出現的位置
^ :行首錨定,用于模式的最左側
$ :行尾錨定,用于模式的最右側
^PATTERN$: 用于模式匹配整行
^$: 空行
^[[:space:]]*$ :空白行
\< 或 或 \b :詞首錨定,用于單詞模式的左側
\> 或 或 \b :詞尾錨定;用于單詞模式的右側
\<PATTERN\> :匹配整個單詞
分組:\(\) :將一個或多個字符捆綁在一起,當作一個整體進行處理,如:\(root\)\+
\(root\) \+ 表示root多次
分組括號中的模式匹配到的內容會被正則表達式引擎記錄于內部的變量中,這些變量的命名方式為: \1, \2, \3, …
\1: 從左側起,第一個左括號以及與之匹配右括號之間的模式所匹配到的字符;
實例: \(string1\+\(string2\)*\)
\1: string1\+\(string2\)*
\2: string2v
沒有指定你要匹配的位置,它會把這一列中都符合的顯示出來
當你指定要匹配的位置后,但指定位置中出現了你要匹配的字符 ^\<\(.*\)\> 只是你匹配的字符的一部分,它也會把要配備的顯示出來。這是需要你在你匹配的字符\1 前面加上一個/\1符號或者\<\1\>就行了。
后向引用:引用前面的分組括號中的模式所匹配字符(而非模式本身)
正則表達式圖表
REGEXP :由一類特殊字符及文本字符所編寫的模式,其中有些字符(元字符)不表示字符字面意義,而表示控制或通配的功能
擴展正則表達式:ERE
grep -E, egrep
egrep 及擴展的正則表達式
egrep = grep -E
egrep [OPTIONS] PATTERN [FILE…]
擴展正則表達式的元字符:
字符匹配:
. 任意單個字符
[] 指定范圍的字符
[^] 不在指定范圍的字符
次數匹配:
* :匹配前面字符任意次
?: 0 或1次
+ :1 次或多次
{m} :匹配m次
{m,n} :至少m ,至多n次
位置錨定:
^ : 行首
$ : 行尾
\<, \b : 語首
\>, \b : 語尾
分組:
()后向引用:\1, \2, …
或者:
a|b
C|cat: C 或cat
(C|c)at:Cat 或cat
原創文章,作者:AN0519,如若轉載,請注明出處:http://www.www58058.com/31467