次の awk スクリプトで gpa を浮動小数点数として出力する必要があります。したがって、ファイル my_course.txt 内のテキストは次のようになります。
CSC3320,SYSTEM LEVEL PROGRAMMING,3,1,A
CSC3210,ASSEMBLY LEVEL PROGRAMMING,3,1,B
フィールド 4 の数値が 1 であるかどうかを確認する必要があります。そうであれば、フィールド 3 の時間フィールド 5 に、A、B、または C のいずれであるかに応じて、4、3、または 2 を掛けます。次に、この値を分子に追加します。分母については、フィールド 3 の値を変数の分母に追加するだけです。次に、END でこれら 2 つの数値を除算して出力します。ただし、上記のテキストを使用すると、上記のテキストに対して 3.5 ではなく 3 が出力されます。私は awk のすべての数値が浮動小数点数であると仮定していたので、何が起こっているのか.
calculate(){
awk -F, '
BEGIN{printf "Your GPA is : "}
numerator = 0.0;
denominator = 0.0;
/^CSC/{
if($4=1) {
if($5=="A"){
numerator+=(4.0*$3);
denominator+=$3;
} else if ($5 == "B"){
numerator+=(3.0*$3);
denominator+=$3;
} else if ($5 == "C"){
numerator+=(2.0*$3);
denominator+=$3;
} else {
;
}
}
}
END{print(numerator/denominator)}
' my_course.txt
}
使用する
END{printf "%g", (numerator/denominator)}
プリント 3
END{printg "%f", (numerator/denominator)}
3.000000を印刷します