grep
grep(Global Regular Expression Print)是 Linux 系统中强大的文本搜索工具,用于在文件或输入流中按模式搜索文本并输出包含匹配内容的行。支持基本/扩展正则表达式,可从文件或标准输入读取数据,支持多文件搜索和递归搜索。
grep [选项...] 匹配模式 [文件...]- 匹配模式:要查找的字符串或正则表达式
- 文件:要查找的文件名,可以同时查找多个文件;省略则从标准输入读取数据
匹配模式的引号用法:
- 单引号
'pattern':shell 不解析任何特殊字符,模式原样传递给 grep - 双引号
"pattern":shell 会解析变量($var)和命令替换($(cmd)),但不解析通配符;含$、\等字符时需转义 - 不加引号
pattern:shell 会进行分词和通配符扩展,仅适合不含特殊字符的简单模式
1. 匹配控制
| 选项 | 说明 |
|---|---|
-i |
忽略大小写 |
-v |
反向匹配,只输出不含模式的行 |
-w |
精确匹配整词(相当于正则 '\bword\b') |
-x |
精确匹配整行(相当于正则 '^line$') |
2. 输出控制
| 选项 | 说明 |
|---|---|
-n |
显示匹配行的行号 |
-H |
显示匹配行所在的文件名(多文件搜索时默认开启) |
-h |
不显示匹配行所在的文件名 |
-o |
只输出匹配的部分,而非整行 |
-c |
统计匹配的行数(而非输出内容) |
-m <n> |
找到 n 个匹配后停止搜索 |
3. 递归与文件筛选
| 选项 | 说明 |
|---|---|
-r |
递归搜索目录下的所有文件 |
-R |
与 -r 类似,但会跟随符号链接 |
--include=<GLOB> |
只对文件名匹配 GLOB 的文件内容进行匹配 |
--exclude=<GLOB> |
排除文件名匹配 GLOB 的文件 |
--exclude-dir=<GLOB> |
排除文件名匹配 GLOB 的目录 |
--exclude-from=<FILE> |
从指定 FILE 中读取多个 GLOB 模式来过滤文件(每行一个 GLOB) |
4. 正则表达式相关
| 选项 | 说明 |
|---|---|
-F |
将模式视为固定字符串(不解析正则表达式) |
-G |
使用基本正则表达式(默认,部分元字符如 |、+ 需要转义 \) |
-E |
使用扩展正则表达式(支持 |、()、+ 等元字符,无需转义) |
-P |
使用 Perl 兼容正则表达式(支持更多高级特性) |
1. 基础用法
# 在 file.txt 中搜索包含 "error" 的行grep "error" file.txt
# 从标准输入中搜索(例如结合管道)cat file.txt | grep "warning"
# 搜索多个文件grep "hello" file1.txt file2.txt2. 匹配控制
# 忽略大小写搜索 "apple"grep -i "apple" fruits.txt
# 输出不包含 "success" 的行grep -v "success" result.log
# 精确匹配整词 "test"(不匹配 "testing" 或 "tests")grep -w "test" report.txt
# 显示匹配行的行号grep -n "error" app.log3. 递归搜索
# 递归搜索当前目录下所有文件中包含 "function" 的行grep -r "function" .
# 递归搜索时只包含 .py 文件,排除 .git 目录grep -r --include="*.py" --exclude-dir=".git" "import" .4. 正则表达式
# 基本正则:搜索以 "user_" 开头的行(^ 表示行首)grep "^user_" config.txt
# 扩展正则:搜索包含 "error" 或 "warning" 的行(-E 支持 | 无需转义)grep -E "error|warning" log.txt
# 只输出匹配的部分(例如提取所有邮箱地址)grep -o "[A-Za-z0-9._%+-]\+@[A-Za-z0-9.-]\+\.[A-Za-z]\+" emails.txt5. 统计与限制
# 统计文件中包含 "failed" 的行数grep -c "failed" audit.log
# 找到 3 个匹配后停止搜索grep -m 3 "error" large_file.log
# 显示匹配行及其前后各 2 行内容(上下文)grep -C 2 "critical" system.log # -A 2 只显示后 2 行,-B 2 只显示前 2 行man grep- GNU Grep Manual