今天我們來了解一下 grep
grep: 基本正則表達式
egrep: 擴展正則表達式
fgrep: 不支持正則表達式元字符,搜索字符串的速度快
grep 全稱: Global search Regular Exmpression and Printing全面搜索正則表達式並把它打印出來
格式 grep [options] 'pattern' FILE
Grep命令行
-f File,--file=File:從文件中提取模板。空文件中包含0個模板,所以什麼都不匹配。
-h,--no-filename:當搜索多個文件時,不顯示匹配文件名前綴。
-i,--ignore-case:不區分大小寫
-q,--quiet:取消顯示,只返回退出狀態。0則表示找到了匹配的行。
-l,--files-with-matches:打印匹配模板的文件清單。
-L,--files-without-match:打印不匹配模板的文件清單。
-n,--line-number:在匹配的行前面打印行號。
-s,--silent:不顯示關於不存在或者無法讀取文件的錯誤信息。
-v,--revert-match:反向選取,只顯示不匹配的行。
-w,--word-regexp:如果被\<和\>引用,就把表達式做為一個單詞搜索。
-E,使用擴展的正則表達式。
-O,只顯示被模式匹配到的字符串。
-r, 遞歸搜索所有文件。
特殊字符
^
行的開始 如:'^root'匹配所有以root開頭的行。
$
行的結束 如:'/bin/bash$'匹配所有以/bin/bash結尾的行。
.
匹配一個非換行符的字符 如:'r.*h'匹配r後接一個任意字符,然後是h。
*
匹配零個或多個先前字符 如:'root*'匹配所有一個或多個空格後緊跟root的行。 .*一起用代表任意字符。
[]
匹配一個指定范圍內的字符,如'[Rr]oot'匹配Root和root。
[^]
匹配指定范圍外的任意單個字符
\(..\)
標記匹配字符,
\<
單詞的開始 錨定詞首,如:'\<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的行。
\b = \>
錨定單詞
\(\) 分組 \(pattern\)