grep和正則表達式


grepglobal research expression print

是一種強大的文本搜索工具。根據關鍵字匹配行,然后打印含有關鍵字的行的內容。

 

基本格式:grep   “關鍵字”

          grep   “關鍵字”   目錄   在該目錄下找含有關鍵字的文件。

例:

 

 

幾個常見參數:

    -c 計算找到關鍵字的次數。

-i 忽略大小寫。

-v 把沒有匹配到的行顯示出來。

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

-A  num     只顯示匹配到的那一行的后幾行。

-B  num    只顯示匹配到的那一行的前幾行。

 

正則表達式:

.  任意單個字符

例:

a.b    表示以a開頭,中間為一個任意字符,以b結尾的三個字符。

 

*  前面一個字符在此重復零次或更多次。

例:

a*b   表示a出現任意次,b出現一次的行。(可出現的情況ab、b(a在此出現0次)、aab)

aa*b  第一個a表示以a開頭,第二個a表示a出現任意次,最終以b結尾的字符(可出現的情況有ab、aab、aaab,不可能出現b)

 

[范圍]  這個字符在方括號的范圍內。

 

[^范圍] 該字符不在這個范圍的任意字符。

 

.*任意長度的字符

a.*b  表示以a開頭,以b結尾,a與b中間有任意長度的任意字符組成的字符串。

 

? 匹配前面的字符出現一次或0次,用的時候要有轉義字符 (\?)

 

add表示a出現一次,第二個d結尾,第二個d表示a出現0次,d結尾。

d:表示a出現0次,d結尾。

 

{m,n\}:前面一個字符最少出現m次,最多出現n次。使用時要添加轉義字符(  \{m,n\}  )

 

a\{3,9\}d:表示a要出現3~9次,d結尾的字符串。

aaaaaaad:表示a出現7次(在3次和9次之間),d結尾的字符串。

 

^ 行首 “^root”:匹配以root開頭的行。

 

$ 行尾 “root$”:匹配以root結尾的行。

 

^任意字符$  只表示一行中只有該字符串(開頭沒有空格,結尾也沒有空格)的行。

例:

^root$  只表示這一行從開頭只有一個root的字符,結尾沒空格。

 

^$ 空行(和^ $是有區別的,空格也是特殊的字符。)

 

\<任意字符:詞首。以該詞開頭

 

任意字符\>:詞尾。以該詞結尾。

 

注:正則表達式具有貪婪模式,它會盡可能長的匹配文本,典型情況如下:

 

 


免責聲明!

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



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