您好,登錄后才能下訂單哦!
* 匹配任意多個字符(包括零個或一個)
? 匹配任意一個字符(不包括零個)
[characters] ?匹配任意一個屬于字符集中的字符
[!characters] 匹配任意一個不是字符集中的字符
[[:class:]] ?匹配任意一個屬于指定字符類中的字符
? 字符類 意義
[:alnum:] 匹配任意一個字母或數字
[:alpha:] 匹配任意一個字母
[:digit:] ?匹配任意一個數字
[:lower:] ?匹配任意一個小寫字母
[:upper] 匹配任意一個大寫字母
符號 | 描述 | 實例 |
. | 代表單個字符(必須存在) | a..b 可以表示acdb ? ? ? aaab 、abbbb 但不可以表示acb、ab、aba等 |
* | 要和通配符區分開,匹配 * 前面一個字符的0個或多個 *后面的字符一定要在*前面字符的后面 另外*前后字符必須相鄰否則匹配不到 | a*b 可以表示ab、aab、b、abababab 但不可以表示acb、ba等 acb只會匹配到b,也就是視為b前面有0個a ba也只會匹配到b,同樣視為b前面有0個a |
^ | 匹配 ^ 后面字符串開頭 | ?輸入:echo? -e? abcd\accc | grep "^ab" 輸出:abcd |
$ | ?匹配 $ 前面字符串結尾?? | ?輸入:echo? -e? abcd\accc | grep "cc$" 輸出:accc |
?.* | ?匹配任意個字符(0到多個) | ?a.*b 和通配符里面的 * 大致類似 可以代表ab、 acb、 a……b 但不能代表b……a |
?[] | ?表示范圍,可以用來進行模糊匹配 常用選項為【a-z】 【0-9】 | 1.? grep【0-9】 text 過濾出含數字的行 2.? grep【a-z】 text 過濾出含小寫字母的行 3.? grep 【abc】 text 過濾出含有a,b,c的行(注意這個abc是分別匹配,也就是相當于匹配含有a的行,b的行,c的行,并不是字符串abc的行) |
?{} | {n,m}表示匹配 {}?前面字符的至少n個,最多m個 字符,注意:是連在一起的連續字符 還可以為{n,}表示至少有n個 {,m}表示最多有m個 | ?1.輸入echo abbcdfbjk | grep -E "b{1,2}" 輸出?abbcdfbjk? 2. 如果?輸入 echo abbcdfbjk | grep -E "b{2,}"? #表示至少兩個 輸出結果為?abbcdfbjk? 可以看到只有連在一起的兩個bb被匹配到,也就是說明了{}里面的數字表示的不是匹配到的個數,而是匹配字符的長度,像這個例子就是要求出現 b 的長度至少是2,所以只有 bb 被匹配到了 3.? 輸入 grep -E "ac{2,5}b"?匹配a和b之間至少2個最多5個c的行,但是acb要連在一起 |
?【^】 | ?【^a】表示匹配 a 以外的所有字符 | ?輸入? echo? -e abc \ def \ lmn | grep "[^f-z]" 輸出? abc? def lmn,只有[a-e]配匹配到 |
?^[^] | ?匹配 ^[^a]中的以a為開頭以外的所有行 | ?grep "^[^#]"? /etc/passwd? ?匹配? /etc/passwd? 里面不以#開頭的所有行 |
\<? ;? \> | 錨定 單詞首部 (尾部)?? 表示在匹配在首部(尾部)以空格或特殊字符為分隔的指定字符。如果同時錨定首尾? \<? \>? 則表示這個字符的準確匹配,它的前后為特殊字符或空格分隔,不會和任何字符直接連接 注意:必須要加 \ 轉義,即使使用擴展正則也要加? \? 進行轉義 | ?輸入?:echo "hi,rootamroot" | grep "\<root" 輸入: echo "hiroot iamroot" | grep "root\>" ?輸入: echo "hi,root? iamroot" | grep "\<root\>" |
?() | ?\1? 調用前面的參數—第一個分組(也就是括號里的參數) 如果用擴展正則則不需要 \ 來進行轉義 | ? 過濾出一行中有兩個相同數字的行 # grep "\([0-9]\).*\1"? /etc/passwd 過濾出行首和行位字母相同的行 # grep "^\([a-z]\).*\1$" /etc/passwd |
擴展正則包含基礎正則,而且多出了? +? ? ?? ?|? ? ()四個指令(注意這里的 | 要和管道符分開) 擴展正則不需要像基礎正則一樣對某些符號進行轉義(一般是用 反斜杠? \? 來進行)
?
+?
作用:重復一個或者一個以上的前一個字符
示例:執行“egrep -n 'wo+d' test.txt”命令,即可查詢"wood" "woood" "woooooood"等字符串
? ?
?
作用:零個或者一個的前一個字符
示例:執行“egrep?-n 'bes?t' test.txt”命令,即可查詢“bet”“best”這兩個字符串
? ?
|?
作用:使用或者(or)的方式找出多個字符
示例:執行“egrep -n 'of|is|on' test.txt”命令即可查詢"of"或者"if"或者"on"字符串
? ?
() ?
作用:查找“組”字符串
示例:“egrep -n?'t(a|e)st' test.txt”。“tast”與“test”因為這兩個單詞的“t”與“st”是重復的,所以將“a”與“e”列于“()”符號當中,并以“|”分隔,即可查詢"tast"或者"test"字符串
? ?
()+??
作用:辨別多個重復的組
示例:“egrep -n?'A(xyz)+C' test.txt”。該命令是查詢開頭的"A"結尾是"C",中間有一個以上的 "xyz"字符串的意思
? ?
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。