grep命令1、作用: Linux系統(tǒng)中g(shù)rep命令是一種強(qiáng)大的文本搜索工具,它能使用多種選項(xiàng)及正則表達(dá)式搜索文本,并把匹配的行打印出來(lái)。grep全稱(chēng)是Global Regular Expression Print,表示全局正則表達(dá)式打印,它的使用權(quán)限是所有用戶(hù)。 2、語(yǔ)法: grep [option...] [patterns] [file...]
可以有零個(gè)或多個(gè)選項(xiàng)參數(shù),以及零個(gè)或多個(gè)文件參數(shù)。patterns參數(shù)包含一個(gè)或多個(gè)由|分隔的模式,當(dāng)通過(guò)“-e patterns”或“-f file”選項(xiàng)給出模式時(shí),將忽略該參數(shù)。當(dāng)在shell命令中使用grep時(shí),通常應(yīng)該引用模式。3、常用選項(xiàng): -E :開(kāi)啟擴(kuò)展(Extend)的正則表達(dá)式。 -i :忽略大小寫(xiě)(ignore case)。 -v :反過(guò)來(lái)(invert),只打印沒(méi)有匹配的,而匹配的反而不打印。 -n :顯示行號(hào) -w :被匹配的文本只能是單詞,而不能是單詞中的某一部分,如文本中有l(wèi)iker,而搜尋的是like,就可以使用-w選項(xiàng)來(lái)避免匹配liker -c :顯示總共有多少行被匹配到了,而不是顯示被匹配到的內(nèi)容,注意如果同時(shí)使用-cv選項(xiàng)是顯示有多少行沒(méi)有被匹配到。 -o :只顯示被模式匹配到的字符串。 –color :將匹配到的內(nèi)容以顏色高亮顯示。 -A n:顯示匹配到的字符串所在的行及其后n行,after -B n:顯示匹配到的字符串所在的行及其前n行,before -C n:顯示匹配到的字符串所在的行及其前后各n行,context 4、基本正則表達(dá)式
- 1匹配字符:
. :任意一個(gè)字符。[abc] :表示匹配一個(gè)字符,這個(gè)字符必須是abc中的一個(gè)。 [a-zA-Z] :表示匹配一個(gè)字符,這個(gè)字符必須是a-z或A-Z這52個(gè)字母中的一個(gè)。 [^123] :匹配一個(gè)字符,這個(gè)字符是除了1、2、3以外的所有字符。 對(duì)于一些常用的字符集,系統(tǒng)做了定義: [A-Za-z] 等價(jià)于 [[:alpha:]] [0-9] 等價(jià)于 [[:digit:]] [A-Za-z0-9] 等價(jià)于 [[:alnum:]] tab,space 等空白字符 [[:space:]] [A-Z] 等價(jià)于 [[:upper:]] [a-z] 等價(jià)于 [[:lower:]] 標(biāo)點(diǎn)符號(hào) [[:punct:]] 5、常見(jiàn)使用示例
- 1 示例1
搜索日志文件中是否存在錯(cuò)誤信息,假如錯(cuò)誤信息的關(guān)鍵字是"error",可以使用如下命令grep error test.log
- 2 示例2
如果搜索的字符串不包含空格則可以不需要引號(hào),如果包含空格,則需要使用雙引號(hào)或者單引號(hào)包起來(lái)。
- 3 示例3
搜索目錄下所有文件,包含子文件夾,加上-r參數(shù)即可grep -r "xxxxxx" *
- 4 示例4
搭配其他命令一起使用,比如:搭配tailf命令實(shí)時(shí)搜索相關(guān)字符串,搭配ps命令搜索相關(guān)進(jìn)程是否啟動(dòng)。tailf xxx.log | grep "good" ps -ef | grep "goodprocess"
- 5 示例5
搜索歷史日志文件,但是歷史日志文件被打包成gz文件了,全部解壓出來(lái)再使用grep搜索就太麻煩了,這時(shí)可以使用zgrep。zgrep -a "good" xxxx.tar.gz
- 6 示例6
搜索不固定的字符串,但是這些字符串有一定的規(guī)律,這時(shí)可以使用正則表達(dá)式。假如日志中的日期格式為1009-123030,想要搜索12點(diǎn)到13點(diǎn)的日志,則可使用如下命令grep "1009-1[2-3][[:digit:]]{4}" test.log grep -E "1009-1[2-3][[:digit:]]{4}" test.log egrep "1009-1[2-3][[:digit:]]{4}" test.log 這3種方式都可以
- 7 示例7
如果搜出來(lái)的日志比較多,全部打印出來(lái)無(wú)法閱讀,那么可以將其存到一個(gè)文件中。egrep "1009-1[2-3][[:digit:]]{4}" test.log > 1213.log
- 8 示例8
同時(shí)搜索多個(gè)關(guān)鍵字,使用|分割關(guān)鍵字,如下多個(gè)關(guān)鍵字是或的關(guān)系grep "hund|world|China" test.log grep -E "hund|world|China" test.log egrep "hund|world|China" test.log 這3種方式都可以
多個(gè)關(guān)鍵字與的關(guān)系,使用多個(gè)grep分別搜索,同一行包含所有關(guān)鍵字才會(huì)有結(jié)果。復(fù)制 grep hund test.log | grep world | grep China
?著作權(quán)歸作者所有:來(lái)自51CTO博客作者恒生LIGHT云社區(qū)的原創(chuàng)作品,如需轉(zhuǎn)載,請(qǐng)注明出處,否則將追究法律責(zé)任一個(gè)提高工作效率的常用linux命令 https://blog.51cto.com/u_7932852/4272987
本文摘自 :https://blog.51cto.com/u