首页 > 解决方案 > 在 python/bash 中打印带有条件的特定行范围

问题描述

这是示例代码

    DEBUG: extra
    DEBUG:Fri Dec  7 06:48:47 2018:16920:QOP: final output is test testtset
    output output
    output
    DEBUG: extra extra
    DEBUG: extra

我的代码充满了这样的块,我想从“最终输出是”获取所有输出到所有块的最后一个输出语句。

预期输出:

 test testtset
    output output
    output

我的代码:

stream=open("debuglog.txt","r")
lines=stream.readlines()

for i in lines:
        if ("final output is" in i):
                print lines[lines.index(i)]

目前我的代码只打印具有文本“最终输出是”的行,但我希望它打印完整输出直到下一个“调试:”

标签: pythonbashshellscriptingtext-processing

解决方案


尝试这个:

stream=open("debuglog.txt","r")
lines=stream.readlines()

keep_line = False
for i in lines:
    if "DEBUG:" in i:
        keep_line = False
    if "final output is" in i:
        keep_line = True
    if keep_line:
        print(i)

它基本上在“最终输出是”之后遍历每一行,直到找到另一个“DEBUG:”。

希望这可以帮助。


推荐阅读