Linux grep 命令详解及示例大全


grep(Global Regular Expression Print)是 Linux/Unix 中非常强大的文本搜索工具,用于查找符合条件的字符串。它支持正则表达式、递归搜索、高亮显示等功能,是开发、运维人员的常用工具之一。

本文将全面介绍 grep 命令的常用选项,并结合示例帮助你掌握其使用技巧。

一、基本语法

grep [选项] '模式' 文件

二、常用选项及示例

1. 基本匹配:查找包含某字符串的行
grep "main" hello.c

说明:查找 hello.c 文件中所有包含 main 的行。

2. 忽略大小写匹配 -i
grep -i "hello" example.txt

说明:无论大小写,匹配 hello、Hello、HELLO 等。

3. 显示行号 -n
grep -n "return" hello.c

说明:显示每一行匹配内容所在的行号,便于定位。

4. 递归查找目录下的文件 -r 或 -R
grep -r "TODO" ./src/

说明:递归搜索 ./src/ 目录下所有文件中包含 TODO 的行。

5. 仅显示匹配的字符串 -o
grep -o "[0-9]\{3\}-[0-9]\{4\}" phones.txt

说明:只输出匹配的电话号码格式(如 123-4567),不显示整行。

6. 使用正则表达式 -E(扩展)或 egrep
grep -E "jpg|png|gif" files.txt

或者

egrep "jpg|png|gif" files.txt

说明:查找包含 jpg、png 或 gif 的行。

7. 显示匹配前后行 -A, -B, -C
grep -A 2 "error" log.txt

说明:显示匹配到 error 的行及其后面两行。

grep -B 2 "error" log.txt

说明:显示匹配行及其前两行。

grep -C 2 "error" log.txt

说明:显示匹配行以及前后各两行。

8. 统计匹配的行数 -c
grep -c "include" hello.c

说明:统计包含 include 的行数。

9. 仅显示文件名 -l(小写 L)
grep -l "main" *.c

说明:列出所有包含 main 的 .c 文件名。

10. 仅显示不匹配的行 -v
grep -v "^#" config.txt

说明:显示不以 # 开头的行(忽略注释)。

11. 匹配整词 -w
grep -w "int" hello.c

说明:只匹配单独出现的 int,不会匹配 print 或 integer。

12. 匹配整行 -x
grep -x "int main()" hello.c

说明:仅当整行完全匹配 int main() 时才显示。

13. 查找多个关键字 -e
grep -e "error" -e "fail" log.txt

说明:匹配包含 error 或 fail 的行。

14. 在输出中高亮匹配内容 --color
grep --color "main" hello.c

说明:将 main 高亮显示,方便快速识别。

15. 查找二进制文件中的字符串 -a
grep -a "PNG" image.png

说明:将二进制文件当作文本处理,可用于检查文件头等。

三、实用技巧合集

1. 查找所有包含 IPv4 地址的行
grep -Eo "[0-9]{1,3}(\.[0-9]{1,3}){3}" access.log
2. 排除某些文件类型
grep -r --exclude="*.o" "malloc" .
3. 将结果输出到新文件
grep "define" config.h > defines.txt

四、总结

选项 含义
-i 忽略大小写
-n 显示行号
-v 反向匹配
-c 统计匹配行数
-l 只显示文件名
-r 递归查找目录
-o 仅输出匹配部分
-A/-B/-C 显示匹配前后行
–color 高亮显示
-E / egrep 扩展正则

掌握 grep,你就拥有了一把在文本中快速定位问题的“放大镜”。无论是日志分析、源码检索,还是数据提取,grep 都能大大提高你的效率。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

草台班主

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值