아래와 같이 수백 줄의 텍스트 파일이 있습니다. 레코드 개수를 추출해서 합치는 방법을 찾으려고 합니다. 그런 다음 답변을 별도의 파일에 저장하고 싶습니다. 이것이 제가 작성하려고 시도한 첫 번째 스크립트입니다.
Record 4957 of message 1:
Record 3411 of message 1:
Record 2529 of message 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 $!;
간략한 설명: 다음에 추가되지 않는 한 행당 하나 이상의 연속 정수의 모든 인스턴스를 수집합니다 :
. 그런 다음 이러한 새 값을 추가하기만 하면 변수가 업데이트됩니다.
답변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