テキストファイルから数字をインポートして一緒に追加します。

テキストファイルから数字をインポートして一緒に追加します。

以下に示すように、数百行のテキストファイルがあります。レコード数を抽出してまとめる方法を見つけようとしています。その後、答えを別のファイルに保存したいと思います。これが私が書こうとした最初のスクリプトです。

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つ以上の連続した整数のすべてのインスタンスを収集します:。その後、これらの新しい値を追加するだけで変数が更新されます。

答え2

申し訳ありません。必要なawkの回答を調べる必要があります。

awk '{sum+=$2}END{print "There are "sum" records."}' in.txt

Ninjaエディタは、「レコード」を含む行のみを合計するようにします。

awk '$1=="Record"{sum+=$2}END{print "There are "sum" records."}' in.txt

関連情報