grep 一切直到并包括模式

aba*_*awi 2 grep sed gnu awk

假设我有一个包含异常的日志文件,如图所示

java.lang.NullPointerException blabla
ABC.Exception blalabbla
dogchacecat.Exception yadayada
Run Code Online (Sandbox Code Playgroud)

我希望能够从头到尾输出每一行直到(包括)“异常”

所需的输出:

java.lang.NullPointerException
ABC.Exception
dogchacecat.Exception
Run Code Online (Sandbox Code Playgroud)

如何使用任何 GNU 工具(grep、awk、sed)执行此操作?谢谢!

jes*_*e_b 5

使用grep

grep -o '.*Exception' file
Run Code Online (Sandbox Code Playgroud)

-o, --only-matching
仅打印行的匹配部分。

'.*Exception'
这将匹配任何字符(行终止符除外)的 0 次和无限次出现,直到单词“Exception”


为了获得您在评论中提到的行为(在Exception任何前导空格之前拉动字符串并包括在内),您可以使用扩展或 perl 正则表达式来使用\S控制字符(任何非空格字符):

grep -oE '\S+Exception' file
Run Code Online (Sandbox Code Playgroud)