【发布时间】:2021-06-16 12:51:17
【问题描述】:
如果模式之间存在关键字,我需要在其中打印第一行。
例如:
LEVEL: X
abc
123
def rty
LEVEL: A
abc
123
LEVEL: Z
abc
def 345 rty
ocp
在模式“LEVEL”之间搜索关键字“def”。
预期输出:
LEVEL: X
LEVEL: Z
看用awk或者sed,因为日志文件10000多行。
我尝试过类似的东西
awk '/LEVEL:/{flag=1}/LEVEL:/{print;flag=0}flag' file
但我不确定如何在列表中搜索关键字“def”并仅打印匹配的第一行。
更新:
awk '/LEVEL:/{flag=1}/def/||/LEVEL:/{print;flag=0}' file
但是输出是这样的
LEVEL: X
def rty
LEVEL: A
LEVEL: Z
def 345 rty
为了更清楚,我要在 2 个连续模式“LEVEL:”关键字“def”之间进行搜索。
任何建议都会有所帮助。 谢谢。
【问题讨论】:
-
欢迎来到 SO,请在您的问题中以代码的形式添加您的努力,这在 SO 上受到强烈鼓励,谢谢。
-
目前,您的示例输入中没有任何内容可以满足要求。 (在任何
"LEVEL: .."标签之间没有"def"。) -
感谢您的努力,但您获得预期输出的逻辑不清楚,请在您的问题中更清楚地提及您的逻辑,谢谢。
-
@RavinderSingh13:我已经更新了帖子。我希望现在更清楚了吗?
-
@DavidC.Rankin:第一个和第二个“LEVEL:”之间有定义。但是对于最后一个模式“LEVEL: Z”没有对应的“LEVEL:”模式。