Вывести определенный диапазон строк с условием в python / bash - PullRequest
0 голосов
/ 07 декабря 2018

Это пример кода

    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

Мой код заполнен такими блоками, и я хочу извлечь все выходные данные из "final output is" в последний оператор output для всех блоков.

Ожидаемый вывод:

 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)]

В настоящее время мой код печатает только строку с текстом «final output is», но я хочу, чтобы он выводил полный выводдо следующего "DEBUG:"

1 Ответ

0 голосов
/ 07 декабря 2018

Попробуйте это:

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)

По сути, он проходит по каждой строке после "final output is", пока не найдет другой "DEBUG:".

Надеюсь, это поможет.

...