本速查表旨在快速回顾使用命令行程序 grep 所涉及的主要概念,并假定您已经了解其用法。
搜索标准输出(即文本流)
$ grep [选项] 搜索字符串
在文件中搜索精确字符串:
$ grep [选项] 搜索字符串 文件路径
打印 myfile.txt 文件中包含字符串 "mellon" 的行
$ grep 'mellon' myfile.txt
文件名中接受通配符。
选项 | 示例 | 操作 |
---|---|---|
-i |
grep -i ^DA demo.txt | 忽略大小写 |
-w |
grep -w "of" demo.txt | 仅搜索完整单词 |
-A |
grep -A 3 'Exception' error.log | 显示匹配字符串后的 3 行 |
-B |
grep -B 4 'Exception' error.log | 显示匹配字符串前的 4 行 |
-C |
grep -C 5 'Exception' error.log | 显示匹配字符串周围的 5 行 |
-r |
grep -r 'r3f.cn' /var/log/nginx/ | 递归搜索(包括子目录) |
-v |
grep -v 'warning' /var/log/syslog | 返回所有不匹配模式的行 |
-e |
grep -e '^al' filename | 使用正则表达式(以 'al' 开头的行) |
-E |
grep -E 'ja(s|cks)on' filename | 扩展正则表达式(包含 jason 或 jackson 的行) |
-c |
grep -c 'error' /var/log/syslog | 计算匹配项的数量 |
-l |
grep -l 'robot' /var/log/* | 打印匹配项所在的文件名 |
-o |
grep -o 搜索字符串 文件名 | 仅显示字符串的匹配部分 |
-n |
grep -n "go" demo.txt | 显示匹配项的行号 |
- | - |
---|---|
. | 任意字符。 |
? |
可选,且只能出现一次。 |
* |
可选,且可以出现多次。 |
+ |
必需,且可以出现多次。 |
- | - |
---|---|
{n} |
前一项恰好出现 n 次。 |
{n,} |
前一项出现 n 次或更多次。 |
{,m} |
前一项最多出现 m 次。 |
{n,m} |
前一项出现 n 到 m 次之间。 |
- | - |
---|---|
[:alpha:] |
任何大小写字母。 |
[:digit:] |
任何数字。 |
[:alnum:] |
任何大小写字母或数字。 |
[:space:] |
任何空白字符。 |
- | - |
---|---|
[A-Za-z] |
任何大小写字母。 |
[0-9] |
任何数字。 |
[0-9A-Za-z] |
任何大小写字母或数字。 |
^ |
行首。 |
$ |
行尾。 |
^$ |
空行。 |
\< |
单词开头。 |
\> |
单词结尾。 |