2013-05-02 3 views
1

У меня есть файл журнала, и я пытаюсь сохранить всю строку, как только найду This has happened due to., а затем начнется новая строка.Поиск строк после определенной строки в perl

Так в основном журнал выглядит следующим образом

Bla bla bla bla....This has happened due to. 

ABC 

DEF 

GHI 

JKL 

пожалуйста, вы можете помочь мне, чтобы соответствовать paatern однажды я обнаружил, что линия «Это произошло из-за».

ответ

4
while (<>) { 
    next unless /This has happened due to/; 
    while (<>) { 
    # Process lines 
    } 
    last; 
} 
+0

, пожалуйста, измените свой ответ на «ввод файла» – gaussblurinc

+1

@loldop. Я предпочитаю писать сценарии, обрабатывающие stdin, если только нет причин. Он всегда может адаптировать это к своим конкретным потребностям. – Barmar

+0

В моем тесте это заставляет интерпретатора повесить вечно. –

3
#!/usr/bin/env perl 

while (<>) { 
    last if /This has happened due to/; 
} 

while (<>) { 
    print; # do smth with the line 
} 

Сохранить скрипт в файл и сделать его исполняемым. Затем запустите, как ./script.pl logfile

Смежные вопросы