文本處理工具--正則表達式

在學習linux中文本搜索是很重要的 對於初學者來說如何快速學會運用正則表達式相當重要的。

文本搜索工具,根據用戶指定的文本搜索模式(搜索條件)對目標進行逐行搜索,顯示能匹配的行。

文本搜索:

         grep :基本正則表達式

egrep:擴展正則表達式

fgrep:fast,不支持使用正則表達式

   其語法格式: grep [option]...'PATTERN' FILE...

   

正則表達式:是一類字符所書寫的模式,其中許多字符不表示其字面意義,而是表達控制或通配等能;

          元字符:不表示其字面意義,而用於額外功能性描述。


基本正則表達式


1.字符匹配

.

匹配任意單個字符

[]

匹配指定範圍內的任意單個字符

[0-9],[[:digit:]]

[a-z],[[:lower:]]

[A-Z],[[:upper:]]

[[:space:]]

[[:punct:]]

[[:alpha:]]

[[:alnum:]]

[^]

取反

 


2.次數匹配元字符:用於實現指定其前面的字符所能夠出現的次數。

*

任意長度,它前面的字符可以出現任意次

\?

0次或1次,它前面的字符可有可無的

\m

m次,它前的字符要出現m

\{m,n\}

至少m次,之多n

\{m,\}

至少m

\{0,n\}

n

.*

任意長度的任意字符

 

             


    

3.位置錨定:

   

^

行首錨定;寫在模式最左側   例如:grep "^r...t"  /etc/passwd

$

行尾錨定;寫在模式最右側  例如:grep "r...t$"  /etc/passwd

^$

空白行       例如:grep "^$"  /etc/passwd | wc -l

\<

詞首,出現於單詞左側.     例如: grep "\<r...t" /etc/passwd

\>

詞尾,出現於單詞右側      例如        grep  "r...t\>"  etc/passwd

  


  

4.分組:

            

\(\)

分組中的模式匹配到內容,可由正則表達式引擎記憶在內存中,之後可被引用例如:\(ab\)*    grep "\(ro\)*" etc/passwd

\(\)引用

有編號:自左而右的左括號,以及與其匹配右括號 例如 \(ab)(x\)y\).*\(mn\

\#

引用第n個括號所匹配到的內容,而非模式本身 

例如:

 \(ab\?c\).*1

正確:abcmnaaa         錯誤:abcmnac

           abcmnabc

          acmnac

 

5:grep的命令選項

-v

反向選取

-o

僅顯示匹配的字串,而非字串所在的行

-i

忽略字符大小寫

-E

支持使用擴展正則表達式

-A#

顯示上行  #(變量輸入幾行)

-B#

顯示下行

-C#

顯示全部

 



  

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