grep:根據模式搜索文本,並將符合模式的文本行顯示出來
Pattern:文本字符和正則表達式的元字符組合而成的匹配條件
grep
-i 忽略大小寫
--color 匹配到的字符串顏色顯示
-v 顯示沒有被匹配的行
-o 只顯示被匹配模式匹配到的字符串
-E 支持擴展正則表達式
-A #顯示被匹配到的行的後N行
-B #顯示被匹配到的行的前N行
-C #顯示被匹配到的行的前後N行
正則表達式:REGEXP(REGular EXPression)
默認工作在貪婪模式下,儘可能長的匹配
元字符:
. 匹配任意單個字符
字符集合:[:digit:]任何數字 [:lower:]小寫字母 [:upper:]大寫字母 [:punct:]標點符號 [:space:]空格 [:alpha:]任何字母 [alnum:] 任何字母和數字
* 匹配其前面的字符任意次 .* 任意長度的任意字符
? 匹配起前面的字符一次或零次
{m,n} 匹配其前字符至少m次最多n次,grep下要加\,避免被shell解析,或者直接使用egrep。一個數字,{x}的意思是"前面的字符或字符簇只出現x次";一個數字加逗號,{x,}的意思是"前面的內容出現x或更多的次數";兩個用逗號分隔的數字,{x,y}表示"前面的內容至少出現x次,但不超過y次
位置錨定:
^ 錨定行首
$ 錨定行尾
^$ 空白行
\< 錨定詞首,其後面的任意字符必須作爲單詞首部出現 \b
\> 錨定詞尾,其前面的任意字符必須作爲單詞的尾部出現 \b
分組
() \NUM 括號中的內容作爲在此引用 後向引用
例如:
He love his lover.
She like her liker.
He like his lover.
She love her liker.
grep "\(l..e\).*\1" test.txt
擴展正則表達式
.
*
+ 其前字符至少1次
?
[]
{m,n}
( )
\<
\>
| :表示 or或者 匹配前後整個字符 例如:C|cat (C|c)at
IPV4:
A:1-127
B:128-191
C:192-223
D:
E:
fgrep : 不支持正則表達式,只能查找固定的文本,速度快於grep