grep匹配字符串


 

基本正則表達式

元數據

意義和范例

^word

搜尋以word開頭的行。

例如:搜尋以#開頭的腳本注釋行

grep –n ‘^#’ regular.txt

word$

搜尋以word結束的行

例如,搜尋以‘.’結束的行

grep –n ‘.$’ regular.txt

.

匹配任意一個字符。

例如:grep –n ‘e.e’ regular.txt

匹配e和e之間有任意一個字符,可以匹配eee,eae,eve,但是不匹配ee。

\

轉義字符。

例如:搜尋’,’是一個特殊字符,在正則表達式中有特殊含義。必須要先轉義。

grep –n ‘\” regular.txt

*

前面的字符重復0到多次。

例如匹配gle,gogle,google,gooogle等等

grep –n ‘go*gle’ regular.txt

[list]

匹配一系列字符中的一個。

例如:匹配gl,gf。

grep –n ‘g[lf]’ regular.txt

[n1-n2]

匹配一個字符范圍中的一個字符。

例如:匹配數字字符

grep –n ‘[0-9]’ regular.txt

[^list]

匹配字符集以外的字符

例如:grep –n ‘[^o]‘ regular.txt

匹配非o字符

\{n1,n2\}

前面的字符重復n1,n2次

例如:匹配google,gooogle。

grep –n ‘go\{2,3\}gle’ regular.txt

\<word

單詞是的開頭。

例如:匹配以g開頭的單詞

grep –n ‘\<g’ regular.txt

word\>

匹配單詞結尾

例如:匹配以tion結尾的單詞

grep –n ‘tion\>’ regular.txt

 

擴展正則表達式

     grep一般情況下支持基本正則表達式,可以通過參數-E支持擴展正則表達式,另外grep單獨提供了一個擴展命令叫做egrep用來支持擴展正則表達式,這條命令和grep -E等價。雖然一般情況下,基本正則表達式就夠用了。特殊情況下,復雜的擴展表達式,可以簡化字符串的匹配。

     擴展正則表達式就是在基本正則表達式的基礎上,增加了一些元數據。

元數據

意義和范例

+

重復前面字符1到多次。

例如:匹配god,good,goood等等字符串。

grep –nE go+d’ regular.txt

?

匹配0或1次前面的字符

例如,匹配gd,god

grep –nE ‘go?d’ regular.txt

|

或(or)的方式匹配多個字串  
例如:grep –nE ‘god|good’ regular.txt

匹配god或者good。

()

匹配整個括號內的字符串,原來都是匹配單個字符

例如:搜尋good或者glad

grep –nE ‘g(oo|la)’ regular.txt

()

前面的字符重復0到多次。

例如匹配gle,gogle,google,gooogle等等

grep –nE ‘go*gle’ regular.txt

 

1、grep -rn "hello,world!" *

* : 表示當前目錄所有文件,也可以是某個文件名

-r 是遞歸查找

-n 是顯示行號

-R 查找所有文件包含子目錄

-i 忽略大小寫

下面是一些有意思的命令行參數:

 

grep -i pattern files :不區分大小寫地搜索。默認情況區分大小寫, 

grep -l pattern files :只列出匹配的文件名, 

grep -L pattern files :列出不匹配的文件名, 

grep -w pattern files :只匹配整個單詞,而不是字符串的一部分(如匹配‘magic’,而不是‘magical’), 

grep -C number pattern files :匹配的上下文分別顯示[number]行, 

grep pattern1 | pattern2 files :顯示匹配 pattern1 或 pattern2 的行, 

grep pattern1 files | grep pattern2 :顯示既匹配 pattern1 又匹配 pattern2 的行。 

這里還有些用於搜索的特殊符號:

 

\< 和 \> 分別標注單詞的開始與結尾。

例如: 

grep man * 會匹配 ‘Batman’、‘manic’、‘man’等, 

grep '\<man' * 匹配‘manic’和‘man’,但不是‘Batman’, 

grep '\<man\>' 只匹配‘man’,而不是‘Batman’或‘manic’等其他的字符串。 

'^':指匹配的字符串在行首, 

'$':指匹配的字符串在行尾,  

 

 注:“全字匹配”是指匹配的部分兩邊沒有word constituent(字母、數字和下划線),而不是要求匹配的部分全部由word constituent組成,如

eth0和eth0:1: grep -w eth0時兩者都會顯示,eth0和eth0_1: grep -w eth0時只顯示eth0

 

2,xargs配合grep查找

find -type f -name '*.php'|xargs grep 'GroupRecord'


免責聲明!

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



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