基本用法
grep 'str' filename 在filename里查找'str'字符串
常用參數
①grep -c 'str' filename 在filename里查找有多少行包含'str'字符串
②grep -i 'str' filename 在filename里查找'str'字符串,忽略大小寫
③"grep -l" 打印出匹配到'字符串'內容的文件清單。
④grep -n 'str' filename 在匹配的行前面打印行號(左邊綠色)
⑤grep -v 'str' filename (只顯示不匹配的行,v代表reverse)
⑥"grep -w" 全字匹配的搜索。(w為word regexp的意思)
⑦grep -A 4 輸出匹配到'字符串'內容的行和后4行。
⑧grep -B 4 輸出匹配到'字符串'內容的行和前4行。
⑨grep -C 4 輸出匹配到'字符串'內容的行和前后4行。
正則表達式
①^ 錨定行的開始 如:'^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個o的行。
x\{m,\} #重復字符x,至少m次,如:'o\{5,\}'匹配至少有5個o的行。
x\{m,n\} #重復字符x,至少m次,不多於n次,如:'o\{5,10\}'匹配5--10個o的行。
\w #匹配文字和數字字符,也就是[A-Za-z0-9],如:'G\w*p'匹配以G后跟零個或多個文字或數字字符,然后是p。
\W #\w的反置形式,匹配一個或多個非單詞字符,如點號句號等。
\b #單詞鎖定符,如: '\bgrep\b'只匹配grep。
POSIX字符:
為了在不同國家的字符編碼中保持一至,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)