grpe 及正則表達式 文本查找的需要:grep,egrep,fgrepgrep: 根據模式,搜索文本,並將符合模式的文本行顯示出來。Pattern : 文本字元以及正則表達式的元字元組合而成的匹配條件 grep [OPTIONS] PATTERN [FILE...] -i :忽略大小寫 --col ...
grpe 及正則表達式
文本查找的需要:grep,egrep,fgrep
grep: 根據模式,搜索文本,並將符合模式的文本行顯示出來。
Pattern : 文本字元以及正則表達式的元字元組合而成的匹配條件
grep [OPTIONS] PATTERN [FILE...]
-i :忽略大小寫
--color :顏色突出顯示
-v: 顯示沒有匹配到的行(反向匹配)
-o : 只顯示被模式匹配到的字元串(一個字元串顯示為一行)
* :任意長度字元
?:任意單個字元
[]:
[^]
正則表達式: RE regular expression REGEXP
元字元:
.: 匹配任意單個字元
[]:匹配指定範圍內的任意單個字元
[^]:匹配指定範圍外的任意單個字元
!: 取反
字元集合: (引用的時候還要加一個 [ ] )
[:digit:] 數字
[:lower:] 小寫字母
[:upper:] 大寫字母
[:punct:] 標點符號
[:space:] 空白字元
[:alpha:] 所有字母
[:alnum:] 所有數字和字母
匹配次數(貪婪模式:儘可能長的匹配):
* :匹配其前面的字元任意次
a,b,ab,aab,acb,adb,anib
a*b :表示a 出現任意次 然後匹配個b ,所以上面能匹配的是,b,ab,aab
.* :匹配任意長度的任意字元
a.*b : 則表示匹配a開頭b結尾的字元串,中間任意啥都行 . 表示任意字元,* 表示匹配 . 任意次。
\?: 匹配其前面的字元1次或0次
a\?b
\{m,n\}匹配其前面的字元至少m次,至多n次
\是轉義字元,避免被shell解析為命令行展開
a\{1,3}b 匹配ab,a出現至少1次,最多3次的字元 --> ab,aab,aaab
a.\{1,3}b a和b之間出現任意字元,最少1個,最多3個
位置錨定:
^ : 錨定行首,此字元後面的任意內容必須出現在行首
$ : 錨定行尾,此字元前面的任意內容必須出現在行尾
^$: 空白行
\<或\b: 錨定詞首,其後面的任意字元必須作為單詞首部出現
\>或\b: 錨定詞尾,其前面的任意字元必須作為單詞的尾部出現
分組:
\(\)
\(ab\)* : ab作為一個整體,可以出現任意次
後向引用
\1:引用第一個左括弧以及與之對應的右括弧所包括的所有內容 \(ab\).*\1
\2:引用第二個左括弧以及與之對應的右括弧所包括的所有內容 \(ab\).*\2
\3:引用第三個左括弧以及與之對應的右括弧所包括的所有內容 \(ab\).*\3
正則表達式:
Basic REGEXP: 基本正則表達式
Extended REGEXP:擴展正則表達式。
基本正則:
.:
[]:
[^]:
次數匹配:
*:
\?: 0或1次
\{m,n\} :至少m次,至多n次
錨定:
^:
$:
\<,\b:
\>,\b
分組:
\(\):
\1,\2,\3....
grep: 使用基本正則表達式定義的模式來過濾文本的命令:
-i:忽略帶大寫
-v:反向搜索
-o:只顯示匹配到的字元串
--color:顯色
-E:使用擴展正則表達式
-A #: 表示某一行匹配到了,其後面的#行也顯示出來,每一組用 -- 分隔
-B #: 表示某一行匹配到了,其前面的#行也顯示出來,每一組用 -- 分隔
-C #:表示某一行匹配到了,其上下的#行也顯示出來,每一組用 -- 分隔
擴展的正則表達式:
字元匹配:
. :任意單個字元
[]:指定範圍內的單個字元
[^]: 指定範圍外的單個字元
次數匹配:
*:匹配其前字元匹配任意次
?:匹配其前字元0次或1次
+:匹配其前字元至少1次
{m,n}:至少m次,至多n次 (不需要再使用 \ )
位置錨定:
^: 行首
$: 行尾
\<,\b: 詞首
\>,\b:詞尾
分組:
(): 分組
\1,\2,\3....
或者
|:or
group -E = egroup
1-255的數字正則表達式:
\<[1-9|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]]\>
IPV4:
5類: ABCDE 類
A:1-127
B:128-191
C:192-233
匹配IP
fgrep : 不支持正則表達式( 執行速度快)