一、基础搜索选项
**-i**
功能:忽略大小写(如匹配 “ERROR” 和 “error”)
示例:
bash
grep -i “error” app.log
**-v**
功能:反向选择,显示不包含模式的行
示例:
bash
grep -v “INFO” log.txt
**-n**
功能:显示匹配行的行号
示例:
bash
grep -n “TODO” code.py # 输出格式:文件名:行号:内容
**-c**
功能:统计匹配行的数量(非总匹配次数)
示例:
bash
grep -c “GET” access.log
**-w**
功能:完全匹配单词(避免部分匹配)
示例:
bash
grep -w “user_123” logs.txt
二、正则表达式选项
**-E**
功能:启用扩展正则表达式(支持 |、{n} 等语法)
示例:
bash
grep -E “(error|warn)” app.log
**-P**
功能:启用 Perl 兼容正则表达式(支持预查、零宽断言等)
示例:
bash
grep -P “\b\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3}\b” access.log # 匹配IP地址
**-e**
功能:指定多个搜索模式(用空格分隔)
示例:
bash
grep -e “error” -e “timeout” system.log
三、输出控制选项
**-o**
功能:仅输出匹配内容(每项一行)
示例:
bash
grep -o “user_[0-9]+” logs.txt
**-A/-B/-C**
功能:显示匹配行的上下文行(-A 后N行,-B 前N行,-C 前后各N行)
示例:
bash
grep -C 2 “panic” crash.log # 显示匹配行前后各2行
**–color=auto**
功能:高亮显示匹配内容(需终端支持)
示例:
bash
grep --color=auto “error” app.log
四、文件与目录搜索选项
**-r/-R**
功能:递归搜索子目录
示例:
bash
grep -r “config” /etc/
**–include/–exclude**
功能:过滤文件类型或目录(如 .conf、.git)
示例:
bash
grep -r --include=".js" “debug” ./src # 仅搜索.js文件
五、其他实用选项
**-q**
功能:静默模式(仅返回退出状态,不输出内容)
示例:
bash
if grep -q “success” status.txt; then echo “任务完成!”; fi
**-l**
功能:仅列出包含匹配行的文件名
示例:
bash
grep -l “ERROR” .log
*-L**
功能:列出不包含匹配行的文件名
示例:
bash
grep -L “debug” *.log
六、正则表达式基础语法
锚定
^:行首
$:行尾
示例:
bash
grep “^start” file.txt # 匹配以 “start” 开头的行
字符集合
[aeiou]:匹配任意元音字母
[^0-9]:匹配非数字字符
示例:
bash
grep “[^0-9]” data.txt # 匹配包含非数字的行