grep 使用场景
(1)结合find命令和管道
你的一个音乐文件夹里有多种格式的文件,而你只想找到艺术家jay的mp3文件,并且不含有任何的混合音轨
find . -name "*mp3" | grep -i jay | grep -vi "remix"

1)使用find -name 来列出所有mp3文件,重定向给grep
2 ) 使用grep -i 来查找包含jay的行
3)使用grep -vi 来查找不包含remix的行
-i: 不区分大小写
-v:反向匹配,即显示不匹配的行
(2)-A -B -C
很多时候,我们并关心匹配行而是关心匹配行的上下文。这时候-A -B -C就有用了
-A n 后n行,A记忆为(After)
ifconfig | grep -A 2 "Link encap"

-B n 前n行,B记忆为(Before)
ifconfig | grep -B 2 "inet6"

-C n 前n行,后n行,C记忆为(Center)
ifconfig | grep -C 2 "lo"

(3) 用-c来统计数目
你手头有一个很大的文件,这个文件包含网址,比如www.baidu.com tieba.baidu.com等等。你想要知道有多少个隶属于百度的网址
grep -c "baidu.com" file.txt

(4) -r 递归查找子目录
查找当前目录极其子目录下面包含匹配字符的文件
查找子目录,匹配后输出行号,这里的点表示当前目录
grep -nr baidu .

-n:显示匹配行以及行号
查找子目录,匹配后只输出文件名
grep -lr baidu .

-l:查询多文件的时候只输出包含匹配字符的文件名
(5)--line-buffered 打开buffering 模式
你有一个文件是动态的,它不断地添加信息到文件的尾部,而你想要输出包含某些信息的行。即持续的grep一个动态的流
[root@localhost ~]#tail -f file | grep --line-buffered your_pattern
(6)结合ps查找进程

(7)查找不包含某一个目录
grep -R --exclude-dir=node_modules 'some pattern' /path/to/search
grep -R --exclude-dir=test2 baidu .

(8)查找IP地址
这里用到了-o和-P命令
我们通过man grep查看
-o, --only-matching:
Show only the part of a matching line that matches PATTERN.
-P, --perl-regexp:
Interpret PATTERN as a Perl regular expression.
也就是说-o,只显示匹配行中匹配正则表达式的那部分
-P,作为Perl正则匹配
grep -oP "([0-9]{1,3}\.){3}[0-9]{1,3}" file.txt

[0-9]{1,3}表示在0-9的范围里面循环1个、2个或者3个,可能结果有5、20、415等。
如果循环指定次数,如3次,则
如果循环指定次数,如3次,则
{3,3}
可以简写成{3}
。(9)查找邮箱
grep -oP "[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+" file.txt

【推荐】2025 HarmonyOS 鸿蒙创新赛正式启动,百万大奖等你挑战
【推荐】博客园的心动:当一群程序员决定开源共建一个真诚相亲平台
【推荐】开源 Linux 服务器运维管理面板 1Panel V2 版本正式发布
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 复杂业务系统线上问题排查过程
· 通过抓包,深入揭秘MCP协议底层通信
· 记一次.NET MAUI项目中绑定Android库实现硬件控制的开发经历
· 糊涂啊!这个需求居然没想到用时间轮来解决
· 浅谈为什么我讨厌分布式事务
· 为大模型 MCP Code Interpreter 而生:C# Runner 开源发布
· 面试时该如何做好自我介绍呢?附带介绍样板示例!!!
· JavaScript 编年史:探索前端界巨变的幕后推手
· 复杂业务系统线上问题排查过程
· 独立开发:高效集成大模型,看这篇就够了