今天我们来了解一下 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\)
相关阅读: