извлекать текст из файла до совпадения строки в Perl - PullRequest
0 голосов
/ 02 ноября 2019

У меня большой файл. Я пытаюсь это проанализировать, чтобы извлечь значение, связанное со словом Etot. Есть несколько записей Etot. Я хочу извлечь все значения, пока поиск не попадет в строку «СРЕДНЕЕ ЗА». Я использую Cygwin. Вот что у меня пока

$filename= "data.txt";
open($FILE. "$filename") ||die "cannot open the file $filename: $!";
do {

while ($str = <$FILE>)
chomp $str;

if ( $str =~ /Etot/) {
print substr($str, 1,-55). "\n";
}

until ($str =~ "AVERAGES OVER")

}
close($FILE);

close($fh);

1 Ответ

1 голос
/ 02 ноября 2019

Вы делаете это сложнее, чем нужно. Вам нужно всего лишь один цикл, чтобы достичь того, что вам нужно

use strict;
use warnings;

my $filename= "data.txt";
open(my $FILE, "$filename") 
    || die "cannot open the file $filename: $!\n";

while (my $str = <$FILE>)
{
    print substr($str, 1,-55). "\n"
        if $str =~ /Etot/;

    last 
        if $str =~ /AVERAGES OVER/;
}
close($FILE);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...