다음 코드가 있습니다.
TOTAL=0
COUNT=0
# a ratio of 10000 indicates that ILP # rejected was 0.
awk -v c=$COUNT -v t=$TOTAL
'BEGIN { FS=OFS="," }
NR==1 { $(NF+1)="RATIO" }
NR>1 && NF>3{ if($4==0) $(NF+1)=10000; else {$(NF+1)=$6/$4, c++, t=t+$4} }
{ print }' "$FILE" > temp.log
AVG=$(($TOTAL/$COUNT))
너무 깁니다. 필드가 있는 파일이 있고 각 행에 새 필드를 추가하고 있습니다. 이 경우 외부 변수 sum 을 else
증가시키고 싶습니다 .c
t
내가 얻는 오류는 syntax error
바로 앞에 쉼표를 가리키는 것입니다 c++
.
나는 다른 것을 읽었습니다.답변이 쉼표 구문을 사용하므로 이 문제를 해결하는 방법을 알고 싶습니다.
답변1
이 문제와 별개로지적댓글에서:
쉼표는 인수를 구분하는 데 사용됩니다. 명령문을 구분하려면 세미콜론(또는 개행)이 필요합니다. 예시 보기(세미콜론), 작업에서 명령문을 구분합니다.
초기화할 필요는 없습니다모두그리고계산셸의 변수도 해당 값을 쉽게 업데이트할 수 없습니다.앗;대신앗AVG를 계산하려면 다음을 시도해 보세요.
awk 'BEGIN { FS=OFS="," }
NR==1 { $(NF+1)="ratio" }
NR>1 && NF>3{ if($4==0) $(NF+1) =10000; else { $(NF+1) =$6/$4; count++; total+=$4 } }
{ print }
END{ if(count) print "AVG: " total/count }' infile