grep - 文本搜索工具
基本语法
grep [选项] 模式 [文件...]
常用选项
-i # 忽略大小写
-v # 反选,显示不匹配的行
-n # 显示行号
-c # 只显示匹配的行数
-r/-R # 递归搜索目录
-l # 只显示包含匹配项的文件名
-w # 全词匹配
-A n # 显示匹配行及后面n行
-B n # 显示匹配行及前面n行
-C n # 显示匹配行及前后各n行
-E # 使用扩展正则表达式(等价于egrep)
-F # 固定字符串匹配(不解析正则)
正则表达式
. # 任意单个字符
* # 前一个字符0次或多次
^ # 行首
$ # 行尾
\] # 字符集合 \[\^\] # 否定字符集合 \\{n,m\\} # 前一个字符出现n到m次 \\ # 转义特殊字符
常用示例
基本搜索
grep "error" log.txt
grep -i "warning" log.txt # 忽略大小写
grep -n "error" log.txt # 显示行号
grep -c "error" log.txt # 统计出现次数
递归搜索
grep -r "function_name" /path/to/code/
grep -rl "TODO" . # 查找包含TODO的文件
上下文显示
grep -A2 -B2 "关键错误" log.txt # 显示前后2行
正则表达式搜索
grep "^2026-" access.log # 以2023-开头的行
grep "\.html$" files.txt # 以.html结尾
grep "[0-9]\{3\}-[0-9]\{4\}" contacts.txt # 匹配电话号码
多个模式
grep -E "error|warning|fatal" log.txt # 匹配任意一个
grep -e "error" -e "warning" log.txt # 多个-e参数
管道组合
ps aux | grep "nginx" # 查找nginx进程
history | grep "git commit" # 查找历史命令