假设我有一个包含异常的日志文件,如图所示
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)执行此操作?谢谢!
使用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)