linux的grep命令案例
linux的grep命令案例详细介绍
以下是 grep 命令的常见使用案例及说明,覆盖不同场景下的典型用法:
1. 基本搜索:在文件中查找包含指定字符串的行
bash
app.log
- 作用:在
app.log文件中查找包含 "error" 字符串的所有行。 - 输出:返回所有匹配行(默认区分大小写)。
2. 不区分大小写搜索
bash
app.log
- 参数
-i:忽略大小写(Case Insensitive)。 - 作用:查找 "error"、"Error"、"ERROR" 等所有大小写组合的匹配行。
3. 显示匹配行的行号
bash
access.log
- 参数
-n:显示匹配行的行号(Line Number)。 - 输出:格式为
行号:匹配内容(如15:2023-10-01 14:30:00 GET /)。
4. 反向匹配(显示不包含指定字符串的行)
bash
system.log
- 参数
-v:反向选择(Invert Match)。 - 作用:输出
system.log中不包含 "WARNING" 的所有行。
5. 递归搜索目录下的所有文件
bash
/project/code
- 参数
-r:递归(Recursive)遍历目录。 - 作用:在
/project/code目录下的所有文件中,搜索包含 "api_key" 的行,输出格式为文件路径:匹配内容。
6. 仅显示匹配的文件名(不显示具体行)
bash
*.py
- 参数
-l:仅列出文件名(List Files)。 - 作用:在当前目录的所有
.py文件中,找到包含 "TODO" 的文件,并输出文件名(每个文件名一行)。
7. 统计匹配次数
bash
access.log
- 参数
-c:统计匹配行数(Count)。 - 作用:输出
access.log中包含 "404" 的行数(如5表示有 5 行匹配)。
8. 使用正则表达式匹配
bash
log.txt
- 参数
-E:启用扩展正则表达式(Extended Regex)。 - 作用:匹配
log.txt中以YYYY-MM-DD格式开头的行(如2023-10-01 ...)。
9. 排除特定文件 / 目录
bash
--exclude-dirvenv /project
- 参数
--exclude-dir:排除指定目录(如venv虚拟环境目录)。 - 参数
--exclude:排除指定文件名模式(如*.log)。 - 作用:在
/project目录下递归搜索 "debug",但跳过venv目录和所有.log文件。
10. 显示匹配行的上下文(前后几行)
bash
app.log
- 参数
-A 2:显示匹配行后 2 行(After)。 - 参数
-B 1:显示匹配行前 1 行(Before)。 - 作用:输出包含 "EXCEPTION" 的行,及其前 1 行、后 2 行的内容(用于查看上下文)。
总结
grep 是 Linux 中最常用的文本搜索工具,通过组合不同参数(如 -i、-n、-r 等),可以灵活应对各种搜索需求。实际使用中,可根据具体场景选择合适的参数组合。