awk 명령을 사용하여 각 줄의 값을 계산하는 방법

awk 명령을 사용하여 각 줄의 값을 계산하는 방법

급여 파일이 있어요

급여 파일

awk 명령을 사용하여 각 행의 값을 계산하는 데 도움을 줄 수 있습니까? -10행의 각 값에서? 결과

이 명령으로 첫 번째 줄만 계산할 수 있습니다.

awk '{sum += $3*7} END {print sum}' RS= payroll.txt

답변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}필드를 반복하여 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

관련 정보