AWK - 필드 총계 값과 필드 번호를 표시해야 함

AWK - 필드 총계 값과 필드 번호를 표시해야 함

다음과 같은 데이터가 있는데 특정 필드부터 시작하여 값을 계산하거나 합산해야 합니다. 필수 필드 계산 아래의 예는 Field5에서 가져온 것입니다. 예를 들어, Field5의 합계는 42이고, field6의 합계는 107입니다.

입력 파일:

A,B,C,D,42,52,23,101,5,1,0,0,0
A,B,C,D,0,52,3,0,5,0,0,0,0
A,B,C,D,0,1,4,0,4,0,0,0,0
A,B,C,D,0,2,2,0,1,0,0,0,0

예상 출력:

Field5=42, Field6=107, Field7=32, Field8=101, Field9=15, Field10=1

이 코드를 사용해 보니 잘못된 코드라는 것을 알았습니다. ㅋ

echo "A,B,C,D,42,52,23,101,5,1,0,0,0
A,B,C,D,0,52,3,0,5,0,0,0,0
A,B,C,D,0,1,4,0,4,0,0,0,0
A,B,C,D,0,2,2,0,1,0,0,0,0" | awk -F"," '{for(i=0;i<=NF;i++){C++}} END {print i"=" C}'

답변1

당신은 그것을 사용할 수 있습니다 :

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

귀하의 경우에는 인쇄됩니다

Field5=42
Field6=107
Field7=32
Field8=101
Field9=15
Field10=1
Field11=0
Field12=0
Field13=0

답변2

아래에서 awk를 사용해 보세요. 명령은 다음과 같습니다.

j=`awk -F ","  '{print NF}' filename| sort -nr| sed -n '1p'`
for ((i=5;i<=$j;i++)); do awk -v i="$i" -F "," 'BEGIN{sum=0}{sum=sum+$i}END {print "Field"i"=" sum}' filename; done| perl -pne "s/\n/, /g"

산출:

Field5=42, Field6=107, Field7=32, Field8=101, Field9=15, Field10=1, Field11=0, Field12=0, Field13=0

관련 정보