Linux grep 命令用法详解
grep 是 Global Regular Expression Print 的缩写,是 Linux 中最常用的文本搜索 / 过滤工具,用于在文件、管道输入中查找指定字符串 / 正则表达式,并输出匹配的行。
一、基础语法
grep [选项] "搜索关键词" 目标文件/路径
二、最常用核心选项(必记)
| 选项 | 作用 |
|---|---|
-i |
忽略大小写搜索 |
-v |
反向匹配 ,输出不包含关键词的行 |
-n |
显示匹配行的行号 |
-c |
只统计匹配行数,不输出具体内容 |
-l |
只输出匹配到的文件名 |
-w |
全词匹配(仅匹配完整单词,不匹配子串) |
-r/-R |
递归搜索目录下所有文件 |
-E |
启用扩展正则表达式 (等价于 egrep) |
-o |
只输出匹配到的内容,而非整行 |
--color=auto |
高亮显示匹配内容(系统默认已开启) |
三、高频实用示例
1. 基础搜索(文件内查字符串)
在 test.log 中查找包含 error 的行
grep "error" test.log
2. 忽略大小写
匹配 Error/ERROR/error 等
grep -i "error" test.log
3. 显示行号
grep -n "warning" test.log
4. 反向匹配(排除内容)
过滤掉包含 debug 的行
grep -v "debug" test.log
5. 统计匹配行数
grep -c "success" test.log
6. 递归搜索目录
在 /var/log 下所有文件中找 failed
grep -r "failed" /var/log
7. 全词匹配
仅匹配完整单词 root,不匹配 rootuser 等子串
grep -w "root" /etc/passwd
8. 只输出匹配内容
grep -o "port:[0-9]*" app.log
9. 多条件搜索(扩展正则)
匹配包含 error 或 warning 的行
grep -E "error|warning" test.log
# 等价于 egrep "error|warning" test.log
四、结合管道使用(最常用场景)
grep 常和其他命令配合,过滤命令输出:
# 查看进程中是否有 nginx
ps aux | grep nginx
# 查看端口占用中 8080 相关
netstat -tuln | grep 8080
# 查看系统日志中的重启记录
dmesg | grep -i reboot
五、基础正则表达式用法
grep 默认支持基础正则(BRE),常用规则:
| 正则符号 | 含义 |
|---|---|
^ |
匹配行首 |
$ |
匹配行尾 |
. |
匹配任意单个字符 |
* |
匹配前一个字符 0 次或多次 |
[] |
匹配括号内任意一个字符 |
示例:
-
匹配以
root开头的行grep "^root" /etc/passwd
-
匹配以
sh结尾的行grep "sh$" /etc/passwd
-
匹配包含
a或b的行grep "[ab]" test.txt