열 2의 동일한 필드에 해당하는 열 5의 합계 값

열 2의 동일한 필드에 해당하는 열 5의 합계 값

다음 파일을 고려하십시오.

0,2,,,10
0,2,,,15
0,1,,,984
0,2,,,9
1,14,,,5

를 사용하여 각 의 총 가치를 awk계산해야 합니다 .$5$2

원하는 출력은 다음과 같습니다.

2,34
1,984
14,5

답변1

노력하다:

awk -F, '{a[$2]+=$5};END{for(i in a)print i","a[i]}' <file

알아두어야 할 것은POSIX awk의 배열 탐색 순서가 지정되지 않았습니다..

답변2

그리고gnu datamash:

datamash -t ',' -s -g 2 sum 5 <infile

출력은 두 번째 열을 기준으로 정렬됩니다.

1,984
14,5
2,34

답변3

나는 Perl을 사용하고 싶습니다.

#!/usr/bin/env perl
use strict;
use warnings;

my %things;

while (<>) {
    my ( undef, $key, @rest ) = split(/,/);
    $things{$key} += pop(@rest);
}

foreach my $key ( sort { $a <=> $b } keys %things ) {
    print "$key = $things{$key}\n";
}

필요한 경우 이를 한 줄로 압축할 수 있습니다.

관련 정보