grep 及正則表達式


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 : 不支持正則表達式( 執行速度快)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM