grep命令是一種強大的文本搜索工具,它能使用正則表達式搜索文本,並把匹 配的行打印出來。格式:grep [option] pattern file。linux
經常使用選項以下:git
-A 行數:顯示搜索結果那一行及該行以後指定行數的內容。正則表達式
-B 行數:顯示搜索結果那一行及該行以前指定行數的內容。工具
-C 行數:-A與-B的結合,顯示搜索結果那一行及該行以前和以後指定行數的內容。編碼
例如:grep -C 1 tzdata install.log 在install.log文件中搜索包含tzdata字符串的行,並顯示結果行及先後各一行的內容。結果顯示文件中有兩處符合搜索結果。spa
-c:統計符合搜索結果的總行數。字符串
-H:在顯示搜索結果那一行內容的前面標註所在文件。it
-h:與-H相反,在顯示搜索結果那一行內容的前面不標註所在文件。io
-i:忽略大小寫進行搜索。字符編碼
-L:與-l相反,列出不包含搜索結果的文件的文件名。
-l:與-L相反,列出包含搜索結果的文件的文件名。
-n:在顯示搜索結果那一行內容的前面標註所在行號。
-s:不顯示錯誤信息。
-v:顯示不包含搜索文本的行。
經常使用匹配模式以下:
字符串或者「字符串」:最簡單的一種,例如grep tzdata install.log或者grep 「tzdata」 install.log。
^:匹配行的開始,例如'^grep'匹配全部以grep開頭的行。
$:匹配行的結束,例如'grep$'匹配全部以grep結尾的行。
.:匹配一個非換行符的字符,例如'gr.p'匹配gr後接一個任意字符,而後是p。
*:匹配零個或多個先前字符,例如'*grep'匹配一個或多個空格後緊跟grep。
.*:一塊兒用表明任意字符。
[]:匹配指定範圍內的一個字符,例如'[Gg]rep'匹配Grep和grep。
[^]:匹配不在指定範圍內的其它任一字符,例如'[^A-FH-Z]rep'匹配不包含A-R和T-Z的一個字母開頭,緊跟rep的行。
\(..\):標記匹配字符,如'\(love\)',love被標記爲1。
\<:匹配單詞的開始,如:'\<grep'匹配包含以grep開頭的單詞的行。
\>:匹配單詞的結束,如'grep\>'匹配包含以grep結尾的單詞的行。
x\{m\}:重複x字符m次,如:'0\{5\}'匹配包含5個0的行。
x\{m,\}:重複x字符至少m次,例如:'0\{5,\}'匹配至少有5個0的行。
x\{m,n\}:重複x字符至少m次很少於n次,例如:'0\{5,10\}'匹配5--10個0的行。
\w:匹配文字和數字字符,也就是[A-Za-z0-9],例如:'G\w*p'匹配以G後跟零個或多個文字或數字字符,而後是p。
\W:\w的反置形式,匹配一個或多個非單詞字符,如點號句號等。
\b:單詞鎖定符,例如: '\bgrep\b'只匹配grep。
爲了在不一樣國家的字符編碼中保持一至,POSIX(The Portable Operating System Interface)增長了特殊的字符類,如[:alnum:]是[A-Za-z0-9]的另外一個寫法。要把它們放到[]號內才能成爲正則表達式,如[A- Za-z0-9]或[[:alnum:]]。在linux下的grep除fgrep外,都支持POSIX的字符類。
[:alnum:]#文字數字字符
[:alpha:]#文字字符
[:digit:]#數字字符
[:graph:]#非空字符(非空格、控制字符)
[:lower:]#小寫字符
[:cntrl:]#控制字符
[:print:]#非空字符(包括空格)
[:punct:]#標點符號
[:space:]#全部空白字符(新行,空格,製表符)
[:upper:]#大寫字符
[:xdigit:]#十六進制數字(0-9,a-f,A-F)