grep家族由命令grep、egrep和fgrep组成。
grep:在文件中全局查找指定的正则表达式,并且打印所有包含该表达式的行。
egrep和fgrep是grep的变体。
egrep:grep的扩展,提供更多正则表达式元字符支持。
fgrep:固定grep或快速grep,它按字面解释所有字符,即不会处理正则表达式元字符。
- grep
优点:不需要启动编辑器就可以执行查找操作,也用不着把正则表达式括在正斜杠中,使用grep比使用vi快得多。
grep命令在一个或多个文件中查找某个字符模式。
grep命令中,模式可以是一个被引号括起来的字符串,也可以是单个词,位于模式之后的所有单词都被视为文件名。如果这个模式中包含空格,就必须用引号把它括起来。
grep将输出发送到屏幕,它不会对输入文件进行任何修改或变化。
grep使用的正则表达式元字符:
元字符 | 功能 | 示例 |
^ | 行首定位符 | /^love/ |
$ | 行尾定位符 | /love$/ |
. | 匹配单个字符 | /l..e/ |
* | 匹配零个或多个字符 | / *love/ |
[ ] | 匹配一组字符中的一个 | /[Ll]ove/ |
[x-y] | 匹配指定范围中的一个字符 | /[A-Z]ove/ |
[^ ] | 匹配不在指定组中的字符 | /[^A-Z]/ |
\ | 转义元字符 | /love\./ |
元字符 | 功能 | 示例 |
\< | 词首定位符 | /\<love/ |
\> | 词尾定位符 | /love\>/ |
\(..\) | 匹配稍后将要使用的字符的标签 | /\(love\)able\1er/ |
x\{m\}或 x\{m,\}或 x\{m,n\} | 字符x的重复出现: m次、 至少m次、 至少m次且不超过n次 | o\{5,10\} |
grep的退出状态:
grep命令在shell脚本中很有用,因为它总会返回一个退出状态,以说明能否定位到要查找的模式或文件。
如果找到了模式,grep返回的状态为0,表示成功。
如果找不到模式,返回1作为退出状态。
当找不到文件时,返回2作为推出状态。