以下に示すように、数百行のテキストファイルがあります。レコード数を抽出してまとめる方法を見つけようとしています。その後、答えを別のファイルに保存したいと思います。これが私が書こうとした最初のスクリプトです。
Record 4957 of message 1:
Record 3411 of message 1:
Record 2529 of message 1:
ベストアンサー1
パール1行:
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 $!;
簡単な説明:次に追加されない限り、1行につき1つ以上の連続した整数のすべてのインスタンスを収集します:
。その後、これらの新しい値を追加するだけで変数が更新されます。