grep 文本搜索教程:查日志、搜代码必备神器
摘要
grep 是 Linux/macOS 上最常用的文本搜索工具。本教程依据 GNU grep 官方手册,详细介绍基本用法、常用参数(-r -i -n -v -C 等)、正则表达式搜索,以及查日志、搜代码、管道组合等实用技巧。
grep 文本搜索教程
grep(Global Regular Expression Print)是 Linux/macOS 上最常用的文本搜索工具,也是命令行组合技的核心一环。无论是查日志、找代码、过滤输出,grep 都是最快的那把刀。
本教程依据 GNU grep 官方手册整理。
一、基本用法
比如在日志里找包含 error 的行:
grep 最强大的地方在于可以配合管道过滤任何命令的输出:
二、最常用的参数
参数 | 含义 |
|---|---|
| 忽略大小写 |
| 递归搜索目录下所有文件 |
| 显示行号 |
| 反向匹配,显示不含关键词的行 |
| 只统计匹配行数 |
| 全词匹配,避免 "err" 匹配到 "error" |
| 同时显示匹配行之后 3 行(After) |
| 同时显示匹配行之前 3 行(Before) |
| 前后各 3 行(Context),查日志最实用 |
| 只列出包含关键词的文件名 |
| 使用扩展正则表达式(等价于 egrep) |
| 高亮匹配内容(多数发行版默认已开) |
三、递归搜索代码目录
在项目里找某个函数在哪定义,-rn 是标配:
配合 --include 只搜指定类型的文件:
四、正则表达式
加 -E 后可以使用扩展正则:
常用符号:^ 行首、`# grep 文本搜索教程
grep(Global Regular Expression Print)是 Linux/macOS 上最常用的文本搜索工具,也是命令行组合技的核心一环。无论是查日志、找代码、过滤输出,grep 都是最快的那把刀。
本教程依据 GNU grep 官方手册整理。
一、基本用法
比如在日志里找包含 error 的行:
grep 最强大的地方在于可以配合管道过滤任何命令的输出:
二、最常用的参数
参数 | 含义 |
|---|---|
| 忽略大小写 |
| 递归搜索目录下所有文件 |
| 显示行号 |
| 反向匹配,显示不含关键词的行 |
| 只统计匹配行数 |
| 全词匹配,避免 "err" 匹配到 "error" |
| 同时显示匹配行之后 3 行(After) |
| 同时显示匹配行之前 3 行(Before) |
| 前后各 3 行(Context),查日志最实用 |
| 只列出包含关键词的文件名 |
| 使用扩展正则表达式(等价于 egrep) |
| 高亮匹配内容(多数发行版默认已开) |
三、递归搜索代码目录
在项目里找某个函数在哪定义,-rn 是标配:
配合 --include 只搜指定类型的文件:
四、正则表达式
加 -E 后可以使用扩展正则:
常用符号:^ 行首、 行尾、. 任意字符、* 重复零次以上、| 或、[] 字符集合。
五、实用组合技
统计日志中错误最多的前 5 个 IP:
排除注释和空行,只看有效配置:
查找当前目录下哪些文件包含某关键词:
六、总结
场景 | 命令 |
|---|---|
文件内搜索 |
|
过滤命令输出 |
|
递归搜代码 |
|
忽略大小写 | 加 |
带上下文看日志 | 加 |
多关键词 |
|
grep 与后续会讲到的 find、awk、sed 并称文本处理四剑客,配合管道使用威力翻倍。掌握上面这些参数,日常 90% 的搜索需求已经覆盖。
