grep 文本搜索教程：查日志、搜代码必备神器

grep 文本搜索教程 grep（Global Regular Expression Print）是 Linux/macOS 上最常用的文本搜索工具，也是命令行组合技的核心一环。无论是查日志、找代码、过滤输出，grep 都是最快的那把刀。本教程依据 GNU grep 官方手册整理。一、基本用法 grep "关键词" 文件名比如在日志里找包含 error 的行： grep "error" app.log grep 最强大的地方在于可以配合管道过滤任何命令的输出： ps aux | grep nginx ls -la | grep ".conf" history | grep "ssh" 二、最常用的参数参数含义 -i 忽略大小写 -r / -R 递归搜索目录下所有文件 -n 显示行号 -v 反向匹配，显示不含关键词的行 -c 只统计匹配行数 -w 全词匹配，避免 "err" 匹配到 "error" -A 3 同时显示匹配行之后 3 行（After） -B 3 同时显示匹配行之前 3 行（Before） -C 3 前后各 3 行（Context），查日志最实用 -l 只列出包含关键词的文件名 -E 使用扩展正则表达式（等价于 egrep） --color=auto 高亮匹配内容（多数发行版默认已开）三、递归搜索代码目录在项目里找某个函数在哪定义，-rn 是标配： grep -rn "handleRequest" src/ 配合 --include 只搜指定类型的文件： grep -rn "TODO" --include="*.py" . 四、正则表达式加 -E 后可以使用扩展正则： grep -E "^192\.168" access.log # 以 192.168 开头的行 grep -E "error|fail|warn" app.log # 多个关键词任一匹配 grep -E "^$" file.txt # 匹配空行 grep -c -v "^$" file.txt # 统计非空行数常用符号：^ 行首、`# grep 文本搜索教程 grep（Global Regular Expression Print）是 Linux/macOS 上最常用的文本搜索工具，也是命令行组合技的核心一环。无论是查日志、找代码、过滤输出，grep 都是最快的那把刀。本教程依据 GNU grep 官方手册整理。一、基本用法 grep "关键词" 文件名比如在日志里找包含 error 的行： grep "error" app.log grep 最强大的地方在于可以配合管道过滤任何命令的输出： ps aux | grep nginx ls -la | grep ".conf" history | grep "ssh" 二、最常用的参数参数含义 -i 忽略大小写 -r / -R 递归搜索目录下所有文件 -n 显示行号 -v 反向匹配，显示不含关键词的行 -c 只统计匹配行数 -w 全词匹配，避免 "err" 匹配到 "error" -A 3 同时显示匹配行之后 3 行（After） -B 3 同时显示匹配行之前 3 行（Before） -C 3 前后各 3 行（Context），查日志最实用 -l 只列出包含关键词的文件名 -E 使用扩展正则表达式（等价于 egrep） --color=auto 高亮匹配内容（多数发行版默认已开）三、递归搜索代码目录在项目里找某个函数在哪定义，-rn 是标配： grep -rn "handleRequest" src/ 配合 --include 只搜指定类型的文件： grep -rn "TODO" --include="*.py" . 四、正则表达式加 -E 后可以使用扩展正则： grep -E "^192\.168" access.log # 以 192.168 开头的行 grep -E "error|fail|warn" app.log # 多个关键词任一匹配 grep -E "^$" file.txt # 匹配空行 grep -c -v "^$" file.txt # 统计非空行数常用符号：^ 行首、 行尾、. 任意字符、* 重复零次以上、| 或、[] 字符集合。五、实用组合技统计日志中错误最多的前 5 个 IP： grep "404" access.log | awk '{print $1}' | sort | uniq -c | sort -rn | head -5 排除注释和空行，只看有效配置： grep -v "^#" /etc/ssh/sshd_config | grep -v "^$" 查找当前目录下哪些文件包含某关键词： grep -rl "password" . 六、总结场景命令文件内搜索 grep "词" 文件过滤命令输出命令 | grep "词" 递归搜代码 grep -rn "词" 目录/ 忽略大小写加 -i 带上下文看日志加 -C 3 多关键词 grep -E "a|b" 文件 grep 与后续会讲到的 find、awk、sed 并称文本处理四剑客，配合管道使用威力翻倍。掌握上面这些参数，日常 90% 的搜索需求已经覆盖。