我有数百行的文本文件,如下所示。我正在尝试找到一种方法来提取记录数量并将它们加在一起。然后我想将答案放在一个单独的文件中这是我尝试编写的第一个脚本。
Record 4957 of message 1:
Record 3411 of message 1:
Record 2529 of message 1:
答案1
Perl 一行:
perl -ne '$c += $_ for m/(\d+)(?!=:)/g; }{ print $c' in.txt > out.txt
Perl脚本形式:
#!/usr/bin/perl
use warnings;
use strict;
my $infile = 'in.txt';
my $outfile = 'out.txt';
open my $fh, '<', $infile
or die $!;
my $count = 0;
while (my $line = <$fh>){
my @line_count = $line =~ m/(\d+)(?!=:)/g;
$count += $_ for @line_count;
}
close $fh or die $!;
open my $wfh, '>', $outfile
or die $!;
print $wfh $count;
close $wfh or die $!;
简要说明:收集每行一个或多个连续整数的所有实例,只要它们后面没有附加:
.然后只需将这些新值添加到变量中即可更新变量。
答案2
抱歉,但我必须找出强制性的 awk 答案。
awk '{sum+=$2}END{print "There are "sum" records."}' in.txt
Ninja 编辑确实确保只对带有“Record”的行进行求和。
awk '$1=="Record"{sum+=$2}END{print "There are "sum" records."}' in.txt