我想提取句子之间的数据并将其发送到文件
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
更新哈希。
应该可以解决这个问题,尽管它在错误检查方面作用不大,例如文件中的无效值。
我有一个以以下语句开头的时间日志文件:
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
更新哈希。
应该可以解决这个问题,尽管它在错误检查方面作用不大,例如文件中的无效值。