一.grep相關(guān)知識
為固陽等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計制作服務(wù),及固陽網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為成都做網(wǎng)站、網(wǎng)站制作、固陽網(wǎng)站設(shè)計,以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!
1.grep
grep (global search regular expression(RE) and print out the line,全面搜索正則表達(dá)式并把行打印出來)是一種強(qiáng)大的文本搜索工具,它能使用正則表達(dá)式搜索文本,并把匹配的行打印出來。
2.grep工作原理
grep有兩種模式:Basic和Extend模式。
在Basic模式下,命令直接grep ,其中的?、+、{}、|、()都被解釋為普通字符,如果要使用其的特殊意義,就必須對其用轉(zhuǎn)義字符進(jìn)行轉(zhuǎn)義。
在Extend模式下,命令grep-E,其中的?、+、{}、|、()都是特殊字符,要匹配時必須用轉(zhuǎn)義字符將其轉(zhuǎn)義,變?yōu)槠胀ㄗ址?/strong>
grep命令在一個或多個文件中查找某個字符模式,如果這個模式中包含空格,就必須用引號把它括起來。grep命令中,模式可以是一個被引號括起來的字符串,也可以是單個詞。位于模式之后的所有單詞都被視為文件名。grep將輸出發(fā)送到屏幕,它不會對輸入文件進(jìn)行任何修改或變化。grep返回的退出狀態(tài)為0,表示成功。退出狀態(tài)為1,表示沒有找到。如果找不到指定的文件,退出狀態(tài)為2。
3.grep工具選項
常用的grep選項:
grep-i:匹配時忽略字母大小寫
grep-n:列出所有匹配的文本行,并顯示行號
grep-v:只顯示不匹配的文本行
grep-w:匹配整個單詞
grep-x:匹配整個文本行
grep-c:只打印匹配的文本行的行數(shù),不顯示匹配內(nèi)容
不常用的選項:
grep-l:只列出含有匹配的文本行的文件的文件名,不顯示匹配內(nèi)容
grep-h:搜索多個文件時,不顯示匹配文件名前綴
grep-s:不顯示關(guān)于不存在或者無法讀取文件的錯誤
grep-r:遞歸搜索,不僅搜索當(dāng)前目錄,還搜索各級子目錄
grep-q:禁止輸出任何匹配結(jié)果,而是以退出碼狀態(tài)的形式表示是否匹配成功,其中0表示找到了匹配的文本行
grep-P:支持Perl正則表達(dá)式
grep-F:不支持正則表達(dá)式,將模式按字面意義進(jìn)行匹配
grep-b:打印匹配的文本行到文件投的偏移量,以字節(jié)為單位
二.正則表達(dá)式
1.正則表達(dá)式:簡單來說就是通過描述某種規(guī)則,用這種規(guī)則去匹配信息。正則表達(dá)式一般要用單引號括起來
正則表達(dá)式的三要素:數(shù)量限定符、位置限定符和字符類
2.三要素
1>字符類:描述匹配字符信息
2>數(shù)量限定符:用來描述匹配字符數(shù)量
其中?、+、*這三個較為重要
3>用來描述匹配字符位置信息
其中常用的是^ 和$
三.正則表達(dá)式結(jié)合grep工具的具體例子
1.數(shù)量限定符例子(常用的)
1>使用? 前導(dǎo)單元出現(xiàn)0次或一次
2>使用+ 前導(dǎo)單元出現(xiàn)1次或多次
3>使用* 緊跟前面的單元出現(xiàn)0次或多次
2.字符類的例子(常用的)
1>使用 . 匹配任意一個字符
2>使用[] 匹配括號里任意一個字符
3>使用^ 匹配除中括號內(nèi)的任意一個字符
3.位置限定符的例子 (常用的)
以file文件里內(nèi)容為例
1>^ 匹配行首位置
以hel開頭的行
2>$ 匹配行末位置
以t結(jié)尾的行
4.混合起來復(fù)雜的運用
file文件里存ip信息
1>去粗略匹配一個ip地址
用命令匹配
由于grep-E是Extend模式,.是特殊字符,而要對其匹配就必須轉(zhuǎn)義
()將正則表達(dá)式的一部分括起來組成一個單元,然后去匹配
2>寫一個shell腳本去匹配file里的ip
shell腳本:
count 用來計數(shù)匹配到的ip地址的個數(shù)
運行結(jié)果: