Retirar números de um arquivo de texto e adicioná-los juntos

0

Eu tenho um arquivo de texto com centenas de linhas, como abaixo. Eu estou tentando encontrar uma maneira de puxar o número de registros e adicioná-los juntos. Então eu quero colocar a resposta em um arquivo separado Este é o meu primeiro script que eu já tentei escrever.

Record 4957 of message 1:
Record 3411 of message 1:
Record 2529 of message 1:
    
por user131515 03.09.2015 / 15:47

2 respostas

2

One-liner Perl:

perl -ne '$c += $_ for m/(\d+)(?!=:)/g; }{ print $c' in.txt > out.txt

Formulário de script em 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 $!;

Breve explicação: Colete todas as instâncias de um ou mais inteiros consecutivos por linha, desde que não sejam seguidos por um : anexado. Em seguida, basta atualizar uma variável adicionando esses novos valores a ela.

    
por 03.09.2015 / 15:57
1

Desculpe, mas eu tive que resolver a resposta awk obrigatória.

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

A edição ninja garante que apenas as linhas com "Record" sejam somadas.

awk '$1=="Record"{sum+=$2}END{print "There are "sum" records."}' in.txt
    
por 03.09.2015 / 16:25