搜索标准输出数据流
$ grep [options] search_string
在指定文件中搜索精确字符串:
$ grep [options] search_string path/to/file
输出 myfile.txt 文件中包含 "mellon" 字符串的所有行:
$ grep 'mellon' myfile.txt
文件名参数支持使用通配符匹配。
| 选项参数 | 常用示例 | 功能说明 |
|---|---|---|
-i |
grep -i ^DA demo.txt |
忽略字符大小写 (忽略大小写) |
-w |
grep -w "of" demo.txt |
全匹配精确单词 (Word match) |
-A |
grep -A 3 'Exception' error.log |
打印匹配行及其后 N 行 (After) |
-B |
grep -B 4 'Exception' error.log |
打印匹配行及其前 N 行 (Before) |
-C |
grep -C 5 'Exception' error.log |
打印匹配行及其前后 N 行 (Context) |
-r |
grep -r 'qr.warpnav.com' /var/log/nginx/ |
递归搜索子目录下的所有文件 (递归处理) |
-v |
grep -v 'warning' /var/log/syslog |
反向选择(仅打印不匹配该模式的行) |
-e |
grep -e '^al' filename |
使用基础正则表达式匹配 |
-E |
grep -E 'ja(s\|cks)on' filename |
使用扩展正则表达式匹配 |
-c |
grep -c 'error' /var/log/syslog |
仅统计匹配到的总行数 (Count) |
-l |
grep -l 'robot' /var/log/* |
仅输出匹配到内容的文件名 (Files with matches) |
-o |
grep -o search_string filename |
仅打印行中匹配到的具体字符串部分 |
-n |
grep -n "go" demo.txt |
显示匹配行的行号 (Line number) |
| 字符标记 | 匹配含义 |
|---|---|
. |
匹配任意单个字符 |
? |
匹配前面的字符出现 0 次或 1 次(可选) |
* |
匹配前面的字符出现 0 次或多次 |
+ |
匹配前面的字符出现 1 次或多次 |
| 限定符 | 匹配含义 |
|---|---|
{n} |
前面的项恰好重复 n 次 |
{n,} |
前面的项重复至少 n 次 |
{,m} |
前面的项最多重复 m 次 |
{n,m} |
前面的项重复 n 到 m 次 |
| 字符组 | 含义说明 |
|---|---|
[:alpha:] |
任何大小写英文字母 |
[:digit:] |
任何数字 (0-9) |
[:alnum:] |
任何大小写英文字母或数字 |
[:space:] |
任何空白字符(空格、制表符等) |
| 表达式 | 含义说明 |
|---|---|
[A-Za-z] |
任意大小写英文字母 |
[0-9] |
任意数字 |
[0-9A-Za-z] |
任意大小写英文字母或数字 |
| 锚定符 | 含义说明 |
|---|---|
^ |
匹配行首 |
$ |
匹配行尾 |
^$ |
匹配空行 |
\< |
匹配词首 |
\> |
匹配词尾 |