在第一个非匹配线后使grep停止

mmd*_*ger 6 bash grep

我正在尝试使用grep来浏览一些日志,只选择最新的条目.这些日志有多年的繁忙交通,所以这很愚蠢

    tac error.log | grep 2012
    tac error.log | grep "Jan.2012" 
Run Code Online (Sandbox Code Playgroud)

等等

并等待10分钟,而它经过数百万行我已经知道不会匹配.我知道可以-m选择在第一场比赛时停下来,但我不知道如何让它在第一场比赛中停止.我可以做类似的事情,grep -B MAX_INT -m 1 2011但这不是最佳解决方案.

grep可以处理这个或者awk会更有意义吗?

dog*_*ane 5

如何使用awk这样:

tac error.log | awk '{if(/2012/)print;else exit}'
Run Code Online (Sandbox Code Playgroud)

一旦找到与2012不匹配的行,就应该退出.