Linux中g(shù)rep命令詳解
一、grep基本介紹
全拼:Global search REgular expression and Print out the line.
作用:文本搜索工具,根據(jù)用戶指定的“模式(過(guò)濾條件)”對(duì)目標(biāo)文本逐行進(jìn)行匹配檢查,打印匹配到的行.
模式:由正則表達(dá)式的元字符及文本字符所編寫出的過(guò)濾條件﹔
grep命令是Linux系統(tǒng)中最重要的命令之一,功能是從文本文件或管道數(shù)據(jù)流中篩選匹配的行和數(shù)據(jù),如果再配合正則表達(dá)式,功能十分強(qiáng)大,是Linux運(yùn)維人員必備的命令
grep命令里的匹配模式就是你想要找的東西,可以是普通的文字符號(hào),也可以是正則表達(dá)式
二、正則表達(dá)式grep實(shí)踐
首先先看一下這個(gè)測(cè)試文件的內(nèi)容吧
2.1、輸出以 I 開頭的行(不區(qū)分大小寫)
注: 這里的-i代表不區(qū)分大小寫, -n代表顯示匹配行和行號(hào)
2.2、輸出以.結(jié)尾的行
注: 因?yàn)?在這里有著特殊含義, 所以要用\轉(zhuǎn)義一下, 如果不加轉(zhuǎn)義字符的話, grep就會(huì)把它當(dāng)做正則表達(dá)式來(lái)處理(.代表的含義是匹配任意一個(gè)字符)
2.3、$符號(hào) 注意在Linux平臺(tái)下, 所有文件的結(jié)尾都有一個(gè)$符可以利用cat -A 查看文件
2.4、^$(代表空行的意思)組合符
找出文件的空行, 以及行號(hào)
2.5、.點(diǎn)符號(hào)
"."點(diǎn)表示任意一個(gè)字符, 有且只有一個(gè), 不包含空行
2.6、*符號(hào)
"*"表示找出前一個(gè)字符0次或一次以上
找出文件中i出現(xiàn)0次或多次的行和行號(hào)
2.7、.*組合符
".*"表示所有內(nèi)容, 包括空行
2.8、^.*t符 (含義: 以任意內(nèi)容開頭, 直到t結(jié)束)
2.9、[abc]中括號(hào)
中括號(hào)表達(dá)式,[abc]表示匹配中括號(hào)中任意一個(gè)字符, a或b或c,常見的形式如下;
[a-z]匹配所有小寫單個(gè)字母[A-Z]匹配所有單個(gè)大寫字母[a-zA-Z]匹配所有的單個(gè)大小寫字母[0-9]匹配所有單個(gè)數(shù)字[a-zA-ZO-9]匹配所有數(shù)字和字母
匹配abc字符中的任意一個(gè),得到它的行數(shù)和行號(hào)
2.10、grep的參數(shù)-o
使用"-o"選項(xiàng), 可以值顯示被匹配到的關(guān)鍵字, 而不是講整行的內(nèi)容都輸出.
顯示出文章中有多少行有a
"-c"只統(tǒng)計(jì)匹配的行數(shù)
2.11、[^abc]中括號(hào)中去反
[^abc]或[^a-c]這樣的命令, "^"符號(hào)在中括號(hào)中第一位表示排除, 就是排除字符a,b,c
注: 出現(xiàn)再中括號(hào)里的尖角號(hào)表示取反
三、擴(kuò)展正則表達(dá)式grep實(shí)踐
此處使用grep -E進(jìn)行實(shí)踐擴(kuò)展正則, egrep官網(wǎng)已經(jīng)棄用了
3.1、+號(hào)
+號(hào)表示匹配前一個(gè)字符1一次或多次,必須使用grep-E擴(kuò)展正則
3.2、?符
匹配前一個(gè)字符0次或1次
找出文件中包含gd或者god的行
3.3、|符
豎線|再正則中是或者的意思
找出opt目錄中txt結(jié)尾的文件, 其名字中包含a或者e, 不區(qū)分大小寫(-i)
3.4、()小括號(hào)
將一個(gè)或多個(gè)字符捆綁在一起, 當(dāng)作一個(gè)整體進(jìn)行處理
3.5、{n,m}匹配次數(shù)
{n,m}:匹配前一個(gè)字符至少n次, 最多m次
{n,}: 匹配前一個(gè)字符至少n次, 沒(méi)有上限
{,m}: 匹配前一個(gè)字符最多m次,可以沒(méi)有
重復(fù)前一個(gè)字符各種次數(shù), 可以通過(guò)-o參數(shù)顯示明確的匹配過(guò)程
到此這篇關(guān)于Linux中g(shù)rep詳解的文章就介紹到這了,更多相關(guān)Linux中g(shù)rep詳解內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
關(guān)于Shell腳本效率優(yōu)化的一些個(gè)人想法
很想像之前的一片Mysql全面優(yōu)化詳解那樣子寫一篇全面的優(yōu)化文章,但是苦于沒(méi)有相關(guān)書籍參考,也沒(méi)有發(fā)現(xiàn)網(wǎng)絡(luò)牛人有總結(jié)帖或文章之類的,所以就根據(jù)個(gè)人理解和經(jīng)驗(yàn)寫一些能優(yōu)化程序效率的東西吧。這篇是不敢稱全面的2012-09-09Shell腳本實(shí)現(xiàn)從文件夾中遞歸復(fù)制文件
這篇文章主要介紹了Shell腳本實(shí)現(xiàn)從文件夾中遞歸復(fù)制文件,本文腳本實(shí)現(xiàn)從十層左右的文件夾中復(fù)制所有文件到一目錄中,需要的朋友可以參考下2015-02-02Shell中實(shí)現(xiàn)字符串反轉(zhuǎn)方法分享
這篇文章主要介紹了Shell中實(shí)現(xiàn)字符串反轉(zhuǎn)方法分享,本文同時(shí)提供了多種語(yǔ)言的實(shí)現(xiàn)方法,如awk、python、bash、C語(yǔ)言等,需要的朋友可以參考下2014-12-12linux下批量刪除utf8 bom的實(shí)現(xiàn)方法
下面小編就為大家?guī)?lái)一篇linux下批量刪除utf8 bom的實(shí)現(xiàn)方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-03-03