Linux grep 命令用法详解

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 次或多次
[] 匹配括号内任意一个字符

示例:

  1. 匹配以 root 开头的行

    grep "^root" /etc/passwd

  2. 匹配以 sh 结尾的行

    grep "sh$" /etc/passwd

  3. 匹配包含 a 或 b 的行

    grep "[ab]" test.txt

相关推荐
aixingkong9211 小时前
Nvidia为例 XPU的Multi-Host、Socket Direct 、GPUDirect、RDMA 技术点分析
服务器·网络·硬件架构·硬件工程
雯宝3 小时前
mnt_init 函数
linux
律宏阔9 小时前
WSL Docker 端口明明空闲,但就是绑不上端口
linux·windows
律宏阔9 小时前
WSL 突然断网,无法 ping 内网或外网
linux·windows
穷人小水滴9 小时前
用容器编译 VirtualBox 虚拟机软件 (ArchLinux, podman)
linux·容器·virtualbox
乱码三千9 小时前
如何优雅地直连无公网 IP 的远程 GPU 服务器
linux·人工智能·程序员
yunwei379 小时前
使用 eBPF 跟踪 Nginx 请求
linux·后端·性能优化
yunwei379 小时前
使用 eBPF 跟踪 MySQL 查询
linux·后端·性能优化
yunwei379 小时前
eBPF 示例教程:使用 XDP 捕获 TCP 信息
linux·后端·性能优化
GeW9 小时前
制造业高端化,为什么必须重估Linux和数据库?
linux