Linux grep 命令用法详解

Linux grep 命令用法详解

grepGlobal 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. 多条件搜索(扩展正则)

匹配包含 errorwarning 的行

复制代码
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. 匹配包含 ab 的行

    grep "[ab]" test.txt

相关推荐
ziguo11221 小时前
深入浅出 C/C++ 数据类型:从入门到踩坑
linux·c语言·c++·windows·visual studio
无垠的广袤1 小时前
【工业树莓派 CM0 Dev Board】扩展板设计
linux·python·嵌入式硬件·pcb设计·模块化·传感器
深念Y2 小时前
P2P组网选型与折腾记录
网络·网络协议·p2p·局域网·远程·组网
会编程的土豆2 小时前
MySQL 入门:库、表、行、主键是什么
linux·数据库·网络协议·http
jjjava2.02 小时前
系统日志:从入门到精通的完整指南
网络·数据库
MartinYeung52 小时前
[论文学习]InjecAgent:工具集成大语言模型智能体的间接提示注入基准测试
网络·学习·语言模型
paopaokaka_luck2 小时前
基于Springboot3+Vue3的高校选课系统(AI选课助手、协同过滤算法、分享到微博、扣扣、Echarts图形化分析)
网络·spring boot·网络协议·echarts
△曉風殘月〆3 小时前
如何在Linux中安装Qt开发环境
linux·运维·qt
三川6984 小时前
深入浅出SSD 10:UFS介绍
网络
不会就选b4 小时前
Linux之文件--fd,重定向
linux