grep:Global search REgular expression and Print out the line . 文本過濾工具,根據用戶指定的模式對目標文本進行匹配檢查;打印匹配到的行。過濾即不改變原來文本數據。
grep [options] PATTERN [file…]
–color=auto: 對匹配到的文本著色顯示
-v:顯示不被pattern匹配到的行
-i:忽略大小寫
-n:顯示匹配的行號
-c:統計匹配的行數
-o:僅顯示匹配到的字符串
-q:靜默模式,不輸出任何模式
-A #:after,后#行一并顯示
-B #:before,前#行一并顯示
-C #:context,前后#行一并顯示
-e:實現多個選擇間的邏輯或關系–> grep -e ‘cat’ -e ‘dog’ file
grep的PATTERN 支持正則表達式,支持正則表達式的還有 vim,less,nginx等
正則表達式:regexp,由一類特殊字符及文本字符所編寫的模式,其中有些字符不表示字符字面意義,而表示控制或通配的功能
正則表達式有基本正則表達式(BRE)和擴展正則表達式(ERE)兩種,元字符分類則有四種:字符匹配、匹配次數、位置錨定和分組
字符匹配:
. 表示匹配任意單個字符
[] 表示匹配指定范圍內的任意單個字符
[^] 表示匹配指定范圍外的任意單個字符
[:alnum:] 字母和數字
[:alpha:] 英文字母
[:lower:] [:upper:] 大、小寫字母
[:blank:] (空格和制表符tab)
[:space:] 垂直和水平的空白字符(比[:blank:]包含的范圍廣)
[:cntrl:] 不可打印的控制字符(退格、刪除、警鈴。。。)
[:digit:] [:xdigit:] 十進制數字,十六進制數字
[:graph:] 可打印的非空白字符
[:print:] 可打印的字符
[:punct:] 標點符號
匹配次數:
* 匹配前面的字符任意次,包括0次。在貪婪模式下:即盡可能長的匹配
.* 任意長度的任意字符
\? 匹配器前面的字符 0或1次
\+ 匹配其前面的字符至少一次
\{n\} 匹配前面的字符n次
\{m,n\}匹配其前面的字符至少m次,至多n次
位置錨定:
^ 行首錨定
$ 行尾錨定
^pattern 用于模式匹配整行 ^$ 空行 ^[[:space:]]*$ 空白行
\<,\b 詞尾錨定
\>,\b 詞首錨定
\<pattern\> 匹配整個單詞
分組:
\(\) 將一個或多個字符捆綁在一起當做一個整體進行處理,eg:\(root\)\+
分組括號中的的模式匹配到的內容會被正則表達式引擎記錄與內部的變量中,這些變量的命名方式為:\1,\2,\3,…
\1 表示從坐騎第一個左括號以及與之匹配的右括號之間的模式所匹配到的字符
示例:\(string1\+\(string2\)*\)
\1 :string1\+\(string2\)*
\2 :string2
后向引用:引用前面的分組括號中的模式所匹配字符,而非模式本省
egrep及擴展正則表達式
egrep = grep -E
egrep [options] pattern [file…]
擴展正則表達式的元字符:
字符匹配:
.
[]
[^]
次數匹配:
*
?
+
{m}
{m,n\}
位置錨定:
^
$
\<,\>,\b
分組:
()
后向引用:\1,\2…
或者:
a|b : a 或b
C|cat :C 或者cat
(C|c)at: Cat或者cat
—-joker的部落閣
原創文章,作者:joker,如若轉載,請注明出處:http://www.www58058.com/61145