grep系:grep,egrep,fgrep,文本搜索工具,基於PATTERN對於給定的文本進行模糊搜索,grep系默認工做於貪婪模式下。git
grep:正則表達式
grep [OPTIONS] PATTERN [FILE...]ide
PATTERN:過濾條件,是由正則表達式元字符以及沒有特殊含義的文本字符組成。工具
正則表達式元字符:ui
會被正則表達式引擎解釋爲特殊含義。 pcre——perl語言的正則表達式引擎。spa
基本的正則表達式:BREregexp
擴展的正則表達式:ERE字符串
grep默認僅支持基本正則表達式string
egrep默認僅支持擴展正則表達式it
fgrep默認不開啓正則表達式引擎
文本字符:
只具有字符片面含義的那些字符
經常使用選項:
-i, --ignore-case 忽略文本字符的大小寫
-v, --invert-match 反向匹配,最終顯示的結果是PATTREN不能匹配的行
-c, --count 統計匹配PATTERN的全部的行數
-o, --only-matching 關閉貪婪模式,僅顯示PATTERN能匹配的內容
-q, --quiet, --silent 不輸出任何匹配結果
--color[=WHEN], --colour[=WHEN] 將匹配的PATTREN的內容以特殊顏色顯示
-E, --extended-regexp 擴展的正則表達式 grep-E 至關於egrep
-F, --fixed-strings, --fixed-regexp 至關於fgrep
-G, --basic-regexp 基本的正則表達式,egrep -G至關於grep
-P, --perl-regexp 使用PCRE引擎
-A NUM, --after-context=NUM 在顯示匹配PATTERN的行同時顯示其後面的NUM行
-B NUM, --before-context=NUM
PATTERN;
正則表達式元字符:
基本正則表達式元字符:
GLOBBING-------簡化版的正則表達式: [] ? *
字符匹配:
.:匹配任意單個字符
[]:匹配指定範圍內的任意單個字符
[^]:匹配指定範圍之外的任意單個字符
下列全部的字符集均可以放置於[]之中匹配單個字符
[:lower:]
[:upper:]
[:alpha:]
[:digit:]
[:space:] 空格
[:alnum:]
[:punct:]
[:blank:]
[:xdigit:]:全部的十六進制數字
a-z:全部的小寫字母
A-Z:全部的大寫字母
0-9:全部的十進制數字
次數匹配: 該類字符以前的那個字符能夠出現的次數
*:其前面的字符能夠出現任意次(0次,1次或屢次)
\?:其前面的字符無關緊要(0次或一次)
\+:其前面的字符至少出現一次(1次或屢次)
\{m\}:其前面的字符必須出現m次
\{m,n\}:至少出現m次,至多出現n次 (m<n)
\{,n\}:其前面字符至多出現n次,至少出現0次
\{m,\}:其前面字符至少出現m次
在正則表達式中,表示任意長度任意字符的方式:.*
位置錨定字符:
行錨定:
行首錨定:^
行尾錨定:$
字錨定:
字首錨定:\<或\b
字尾錨定:\>或\b
\b:舊版本中的錨定方法,建議不使用
對於正則表達式的引擎來講,字是由特殊字符組成的連續字符串
分組與引用字符:
\(PATTERN\):將此PATTERN所匹配到的全部字符當作一個不可分割的總體來處理。
在正則表達式引擎中,有一系列內置變量,這些變量會保存全部分組內的字符信息,用於反向引用,這些變量依次是:\1,\2,\3...
..
或:
\|
注意:\|將其左右兩邊的字符串當總體對待。
A\|american:A或american
請找出ifconfig命令中數值在100-255之間的整數:
第一位:1 2
第二位:0-9 0-4 5
第三位:0-9 0-9 0-5
ifconfig | grep '\<\(1[0-9][0-9]\|2[0-4][0-9]\|25[0-5]\)\>'
grep [OPTIONS] [-e PATTERN | -f FILE] [FILE...]
默認狀況下,grep命令後面只容許有一個PATTERN;
若是想要在依次grep搜索中寫多個PATTERN,則須要-e選項,每一個-e選項只能使用一個PATTERN做爲參數;
將所須要的PATTERN寫入到一個文件中,保證每行只有一個PATTERN,咱們就可使用-f的方式實現多PATTERN的匹配;
egrep: 下列用法和grep同樣
擴展的正則表達式元字符:
字符匹配:
.
[]
[^]
次數匹配:
*
?
+
{m}
{m,n}
{m,}
{0,n}
位置錨定:
^
$
\<,\b
\>,\b
分組和引用:
()
\1,\2,\3...
或:
|