我想提取句子之间的数据并将其发送到文件

I want to extract data between sentences and send it to a file

我有一个以以下语句开头的时间日志文件:

N:5,Image: 320 420,SF:2 

然后..

0.192
9.1829
879.08

...然后

N:100, Image 640 480 sf2
0.98
56.973
230.988

随着N的值每次递增。

我想将时间(浮点数)提取到文件中 N= 5 然后 N = 10

这是我写的代码

use strict;

use warnings;

#open(FH, "out_put/Time_log1.txt");

#    my $line =<FH>;

#    my @b =<FH>;

#    foreach my $line (@b)

 #   {

 #   perl -i.bak -ne print unless /\N:5/\b(.*?)/\bN:10\b/ 

 #   print $line >Time_log;

#}
open(FIL, "out_put/Time_log1.txt");

my $sum = 0;

my $count = 0;

my $avg =0;

foreach( <FIL> ) {chomp; $sum += $_;$count++;}

$avg=$sum/$count;

close(FIL);

print "Sum = $sum\n";

print "avg is = $avg\n";

好的,鉴于您正在尝试做的事情 - 看起来您正在对 'N' 行之后的值求和:

use strict;
use warnings;

my %n_values;
my %n_count;
my $current_n = 0;

while (<DATA>) {
    chomp;
    if (m/\AN:\d+/) {
        ($current_n) = (m/\AN:(\d+)/);
    }

    my ($value) = (m/([\d\.]+)/);
    if ( defined $value ) {
        $n_values{$current_n} += $value;
        $n_count{$current_n}++;
    }
}

foreach my $n ( keys %n_values ) {
    print "N: $n value: $n_values{$n}\n";
}

__DATA__
N:5,Image: 320 420,SF:2 
0.192
9.1829
879.08
N:100, Image 640 480 sf2
0.98
56.973
230.988

这将循环遍历 DATA 的内容,一次读取一行,并在每次看到从 N: 开始的行时设置 $current_n。只要有要添加的值,就会为 $current_n 更新哈希。

应该可以解决这个问题,尽管它在错误检查方面作用不大,例如文件中的无效值。