답변1
하다:
awk '{for (i=2;i<=NF;i++) sum[$1]+=$i-10} END{for (i in sum) \
print i, "Total =", sum[i]}' file.txt
{for (i=2;i<=NF;i++) sum[$1]+=$i-10}
필드 add를 반복하면sum
첫 번째 필드가 키이고 필드 값에서 10을 뺀 값이 있는 배열이 생성됩니다.END{for (i in sum) print i, "Total =", sum[i]}
, 원하는 출력 형식으로 배열의 키와 값을 인쇄합니다.
예:
% cat file.txt
employee1 75 75 75 75 75 75 75
employee2 80 80 80 80 80 80 80
employee3 50 50 50 50 50 50 50
% awk '{for (i=2;i<=NF;i++) sum[$1]+=$i-10} END{for (i in sum) print i, "Total =", sum[i]}' file.txt
employee1 Total = 455
employee2 Total = 490
employee3 Total = 280
답변2
awk가 있는 대부분의 시스템에는 Perl도 있는데, 이는 많이 겹치지만 이 상황을 더 편리하게 처리합니다. 당신이 그것을 가지고 있고 직원 당 하나의 라인만 가지고 있다면,
perl -nae '$e=shift @F; $t+=$_-10 for @F; print $e." Total= ".$t.$/' inputfile
직원이 여러 행을 가지고 있거나 가질 수 있고 @heemayl이 올바른 경우 이를 각 직원의 단일 합계에 추가하려고 합니다.
perl -nae '$e=shift @F; $t{$e}+=$_-10 for @F;}{print $_." Total= ".$t{$_}.$/ for keys %t' inputfile