liunx強(qiáng)大的grep命令
liunx強(qiáng)大的grep命令
學(xué)習(xí)命令最好的方式就是模擬真實(shí)環(huán)境,寫出一些可能用到的命令組合,然后慢慢消化,起碼我就是這么過(guò)來(lái)的。一開始基本都是死記,然后再慢慢擴(kuò)展視野,時(shí)間長(zhǎng)了,積累也就多了。接下來(lái)是小編為大家收集的liunx強(qiáng)大的grep命令,歡迎大家閱讀:
liunx強(qiáng)大的grep命令
grep是general regular expression parser 的縮寫,我們可以把它簡(jiǎn)單理解為linux系統(tǒng)的一個(gè)搜索命令。接下來(lái),直接上例子:
1.在某個(gè)文件中搜索指定字符串
在/etc/passwd文件中,搜索字符串guolei:
1
grep 'guolei' /etc/passwd
注意,guolei的引號(hào)可以省略,但是如果搜索字符串中有空格或者你使用正則表達(dá)式,就需要加了。
2.在多個(gè)文件中搜索指定字符串
在當(dāng)前目錄中,搜索包含字符串guolei的文件:
1
grep -r guolei *
注意:-r是recursive的縮寫,表示遞歸的搜索。
在當(dāng)前目錄的.java文件中,搜索包含字符串guolei的文件:
1
grep -r guolei *.java
有時(shí)候,我們的搜索結(jié)果可能比較多,我們可以結(jié)合less命令來(lái)展示結(jié)果:
1
grep -r guolei *.java | less
或者搜索結(jié)果比較多,我們只需要列出文件名:
1
grep -rl guolei *.java
還有一種需求比較常見,我們經(jīng)常想找到某一個(gè)目錄中,包含指定字符串的文件,注意上面的命令不可以遞歸查找。比如,我們想在當(dāng)前目錄下遞歸的查找所有.java文件中包含字符串guolei的文件:
1
find . -type f -name *.java -exec grep -il guolei {} \;
3.搜索時(shí)忽略大小寫
在搜索guolei時(shí),忽略大小寫:
1
grep -ri guolei *
注意:-i是Ignore case的縮寫,表示忽略大小寫。
4.搜索結(jié)果中列出行號(hào)
在搜索結(jié)果中,列出字符串出現(xiàn)位置的行號(hào)碼:
1
grep -rn guolei *.java
注意-n是number的縮寫,表示行號(hào)的意思。
5.反向搜索
實(shí)際開發(fā)中,還有一種情況比較常見,我們要在某個(gè)目錄下搜索不包含某個(gè)字符串的文件:
1
grep -riv guolei * | less
注意:-v是reverse的縮寫,表示逆向的意思。上面的例子為在當(dāng)前目錄中搜索不包含guolei的文件。
6.在管道中使用grep
我們經(jīng)常還會(huì)在管道命令中使用grep,這個(gè)最常見。比如我們要搜索目前系統(tǒng)中的mysql進(jìn)程:
1
ps -ef | grep mysql
或者列出當(dāng)前目錄以html結(jié)尾的文件:
1
ls | grep 'html$'
看了“liunx強(qiáng)大的grep命令”還想看: