【发布时间】:2020-08-24 12:27:25
【问题描述】:
我有一个日志文件,其中包含本身可以拆分为多行的条目,我想找到这些条目的所有实例。
例如:
AAA normal line
BBB normal line
XXX important line
important line continuation 1
important line continuation 2
BBB normal line
normal line continuation 1
AAA normal line
XXX important line
important line continuation 1
important line continuation 2
important line continuation 3
AAA normal line
所有条目都以代码开头(AAA、BBB、XXX 等)。以代码 XXX 开头的行及其相关的续行是我感兴趣的行。续行以空格开头,并且可以有任意数量的续行。续行之后的行可以以任何代码开头。
我认为这是一种“有状态”匹配(尽管它可能无法通过这种方式解决)......即:我想要匹配模式 XXX 的行,然后所有紧跟在以空格开头的行(直到它们不匹配) 't)。
在跟踪日志文件的同时,如何 grep、sed 或 awk?
更新:示例期望结果:
XXX important line
important line continuation 1
important line continuation 2
XXX important line
important line continuation 1
important line continuation 2
important line continuation 3
【问题讨论】:
-
预期输出是什么?同时展示你的尝试。
-
使用 sed 或 grep 非常简单(也可能使用 awk,我不擅长使用 awk)。想一想:你想要所有以“XXX”或“”开头的行。
-
@Beta 不,我不知道。例如,我不希望 BBB 线之后的延续线。
-
对不起,我的错误。在 sed 中它仍然不是太糟糕,但您应该尝试一些解决方案。
-
@anubhava 更新为预期输出。我不知道 sed 或 awk,所以不知道他们是否有能力解决这个问题。我不知道用 grep 解决这个问题。