Linux中的正則表達式 grep egrep fgrep

正則表達式: REGEXP REGuler EXPression,使用元字符和其他字符串來描述、匹配一系列符合某個句法規則的字符串。默認儘可能長得匹配(貪婪模式)。

元字符:

    .:匹配任意單個字符(文件名通配中?表示任意單個字符)

    []:匹配指定範圍內的單個字符

    [^]:匹配指定範圍外的單個字符

    [:space:]:空白字符

    [:puntt:]:所有標點符號

    [:upper:]:所有大寫字母

    [:lower:]:所有小寫字母

    [:alpha:]:所有大小寫字母

    [:digit:]:所有數字

    [:alnum:]:所有數字和大小寫字母

字符次數匹配:

    *:匹配其前字符任意次數(文件名通配中*表示任意長度的任意字符)

    .*:任意長度的任意字符

    \?:匹配其前字符一次或零次,可用可無

    \{\}:\{m,n\}匹配其前字符至少m次,最多n次

        eg:\{1,\}至少1次;\{0,3\}最多3次

位置錨定:

    ^:錨定行首,其後字符必須出現在行首

    $:錨定行尾,其前字符必須出現在行尾

    ^$:空白行

    \<:其後字符必須作爲單詞首部出現,可用\b代替

    \>:其前字符必須作爲單詞尾部出現,可用\b代替

        eg:\<root\>==\broot\b

分組:\(\) 

    eg:\(a,b\)*:ab出現任意次

    小括號最主要的作用不是爲了使其中的內容當作一個整體被看待,而是方便後面內容引用(後向引用)

        eg:\1:調用前面第一個左括號及其與之對應右括號所包括的內容

            \n:調用前面第n個左括號及其與之對應右括號所包括的內容


正則表達式:分爲基本正則表達式和擴展正則表達式

擴展正則表達式:

字符匹配:

.,[],[^]與基本正則表達式一樣


次數匹配

*,?:與基本正則表達式一樣,?前不需要加\

+:其前字符至少一次==基本正則表達式中 \(1,\)

{m,n}:至少m次至多n次,與基本正則表達式花括號前少了\


錨定字符:

    \< \> ^ $ \b 與基本正則表達式一樣


分組:

():不需加\ 支持 \1,\2,\3,…


或者:

    |:or 或者 

    eg:a|b a或者b

    eg:C|cat==C或者cat(而非Cat或者cat)


grep:根據模式去搜索文本,並將符合模式的文本行顯示出來。使用基本正則表達式及其定義的模式來過濾文本的命令。

模式:Pattern 文本字符和正則表達式的元字符組合而成的匹配條件

    -i:忽略大小寫

    --color:被匹配到的字符加顏色顯示

    -o只顯示被匹配到的字符串

    -v反向查找,顯示沒有被模式匹配到的內容行

    -E:使用擴展正則表達式

    -A n:顯示被匹配到的行和其後n行

    -B n:顯示被匹配到的行和其前n行

    -C n:顯示被匹配到的行和其前後各n行

egrep:使用擴展正則表達式及其定義的模式來過濾文本的命令。

    egrep=grep -E


fgrep:fast grep 快速查找字符 不支持正則表達式,就按字符串搜索。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章