You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用grep筛选同时包含两个指定字符串的日志行?

用grep筛选同时包含两个特定字符串的行

当然可以,有几种常用方法实现:

方法1:管道串联两次grep

这是最直观的方式,先过滤出包含第一个字符串的行,再从结果中筛选包含第二个字符串的行:

grep "13/Dec/2022:11" access.log | grep "GET /fr/test"

方法2:单grep结合正则表达式

如果希望一次扫描完成(适合处理大日志文件),可以用扩展正则或Perl正则:

  • 用扩展正则(-E选项),覆盖两个字符串的先后顺序:
grep -E "13/Dec/2022:11.*GET /fr/test|GET /fr/test.*13/Dec/2022:11" access.log
  • 用Perl正则(-P选项),通过正向预查简化写法:
grep -P "(?=.*13/Dec/2022:11)(?=.*GET /fr/test)" access.log

测试示例

针对你提供的日志行:

access.log:site.ch 111.222.333.444 - - [13/Dec/2022:11:40:00 +0100] "GET /fr/test HTTP/1.1" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36"

上述任意一种命令都会输出这一行,因为它同时包含两个目标字符串。

内容的提问来源于stack exchange,提问作者sdespont

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 11:15:59