grep
在文件或输入中搜索匹配正则表达式的行
语法
grep [OPTION]... PATTERN [FILE]...
参数
| 参数 | 说明 | 示例 | 级别 |
|---|---|---|---|
-r --recursive |
递归搜索目录 | grep -r "TODO" src/ |
常用 |
-i --ignore-case |
忽略大小写 | grep -i "error" log.txt |
常用 |
-n --line-number |
显示行号 | grep -n "function" app.js |
常用 |
-l --files-with-matches |
只显示匹配的文件名 | grep -rl "import" src/ |
常用 |
-v --invert-match |
显示不匹配的行 | grep -v "#" config.ini |
常用 |
-c --count |
只显示匹配行数 | grep -c "error" log.txt |
进阶 |
-A |
显示匹配行后 N 行 | grep -A 3 "Error" log.txt |
进阶 |
-B |
显示匹配行前 N 行 | grep -B 2 "Error" log.txt |
进阶 |
-E --extended-regexp |
使用扩展正则 | grep -E "error|warning" log.txt |
常用 |
示例
递归搜索代码
grep -rn "TODO" --include="*.js" .
只搜索 .js 文件
排除目录
grep -rn "import" --exclude-dir=node_modules .
搜索多个关键词
grep -E "error|fatal|panic" /var/log/syslog
统计出现次数
grep -c "404" access.log
显示上下文
grep -B 2 -A 5 "Exception" app.log
前 2 行 + 后 5 行
常见错误
grep: No such file or directory
检查文件路径,或用 -r 递归搜索目录
技巧
- 现代替代:ripgrep (rg) 速度更快,默认递归
- grep -P 支持 Perl 正则(更强大)
- 管道用法:cat log | grep "error" | grep -v "debug"