首頁  >  文章  >  php教程  >  強大的grep命令

強大的grep命令

高洛峰
高洛峰原創
2016-12-13 14:46:291930瀏覽

網路上關於grep指令的解釋一搜一大堆,基本上都是把man指令大致翻譯了一下,說實話,看完就忘!個人認為,學習指令最好的方式就是模擬真實環境,寫出一些可能用到的指令組合,然後慢慢消化,起碼我就是這麼過來的。一開始基本上都是死記,然後再慢慢擴展視野,時間長了,累積就多了。好了,進入正題,談牛逼的grep命令。 

grep是general regular expression parser 的縮寫,我們可以把它簡單理解為linux系統的一個搜尋指令。接下來,直接上例子:

 

1.在某個文件中搜尋指定字串

 

在/etc/passwd檔案中,搜尋字串guolei:

grep 'guolei' /etc/passwd

注意,guolei的引號可以省略,但是如果搜尋字串中有空格或是你使用正規表示式,就需要加了。

 

2.在多個檔案中搜尋指定字串

 

在目前目錄中,搜尋包含字串guolei的檔案:

grep -r guolei *

注意:-r是recursive的縮寫,表示遞歸的搜尋。

在目前目錄的.java檔案中,搜尋包含字串guolei的檔案:

grep -r guolei *.java

有時候,我們的搜尋結果可能比較多,我們可以結合less指令來展示結果

grep -r guolei *.java | less

或搜尋結果比較多,我們只需要列出文件名:

grep -rl guolei *.java

還有一種需求比較常見,我們常常想找到某一個目錄中,包含指定字串的文件,注意上面的指令不可以遞歸查找。例如,我們想在當前目錄下遞歸的查找所有.java檔案中包含字串guolei的檔案:

find . -type f -name *.java -exec grep -il guolei {} \;

3.搜尋時忽略大小寫

 

在搜尋guolei時,忽略大小寫:

grep -ri guolei *

在搜尋guolei時,忽略大小寫:

grep -rn guolei *.java

在搜尋guolei時,忽略大小寫:

grep -riv guolei * | less

在搜尋guolei時,忽略大小寫:

ps -ef | grep mysql

在搜尋guolei時,忽略大小寫:

:-i是Ignore case的縮寫,表示忽略大小寫。

 

4.搜尋結果列出行號

 

在搜尋結果中,列出字串出現位置的行號碼:

ls | grep 'html$'

注意-n是number的縮寫,表示行號的意思。

 

5.反向搜尋

 

實際開發中,還有一種情況比較常見,我們要在某個目錄下搜尋不包含某個字串的檔案:

rrreee

注意:-v是versereverse的縮寫,表示逆向的意思。上面的例子為在目前目錄中搜尋不包含guolei的檔案。


 

🎜6.在管線中使用grep🎜🎜 🎜🎜我們常常也會在管線指令中使用grep,這個最常見。例如我們要搜尋目前系統中的mysql進程:🎜rrreee🎜或是列出目前目錄以html結尾的檔案:🎜rrreee🎜🎜🎜
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn