【发布时间】:2023-02-11 11:07:20
【问题描述】:
在我的应用程序中,我修改了所有的 IP 地址,以免干扰实际的生产系统。结果,我的应用程序抛出了很多异常。这些保存在名为filename 的日志文件中。
我想过滤异常,但我不想看到那些由IP地址修改引起的。
这听起来很简单,因为这些异常前面有一行,包含Failed to connect。
让我们看看如何做到这一点:
过滤异常:
grep "Exception" filename
还显示上一行:
grep -B 1 "Exception" filename
不要显示包含“连接失败”的行:
grep -B 1 "Exception filename | grep -v "Failed to connect"
=> 不,这不是我想要的:这会过滤掉包含“无法连接”字样的行,但仍会显示实际的异常情况。我怎样才能不仅过滤掉异常呢?
我的filename内容是这样的:
... Failed to connect ...
... Exception ...
...
... (lots of these)
...
... <something else than "Failed to connect">
... Exception ...
...
... Failed to connect ...
... Exception ...
...
... (again lots of these)
...
我只对前面没有“连接失败”的... Exception ...行感兴趣。
当我按man grep时,它以:
GNU grep 3.4 ... 2019-12-29
有人有想法吗?
提前致谢
【问题讨论】:
-
你也会考虑
sed或awk吗? -
@anubhava:我确实会考虑
awk,但我希望有一个纯粹的grep解决方案。我希望太多了吗? :-)
标签: regex grep windows-subsystem-for-linux