我有一个标题为"标记"线条是指学生的姓名,姓氏和本学期每个班级的4个分数,如下所示:
private static final String MY_PREFS_FILE_NAME = "MyFile";
private static final String KEY_SP_MUSIC_VOLUME = "KeySpMusicVol";
final SharedPreferences prefs = new ObscuredSharedPreferences(
this, this.getSharedPreferences(MY_PREFS_FILE_NAME, Context.MODE_PRIVATE));
int musicVolume;
musicVolume = prefs.getInt(KEY_SP_MUSIC_VOLUME, 10);
Log.d(TAG, "volume = " + musicVolume);
我尝试创建一个awk脚本,打印每一行,每行(也就是每个学生)的平均分数和他的行数。
f.e。
John McJohn 56 68 31 99
Ronald McDonald 89 89 60 75
Boaty McBoatface 50 50 50 50
依旧等等。
我想出的是以下内容:
Student 1, John McJohn, 63,5
Student 2, Ronald McDonald, 78.25
但是这个输出看起来像是笛卡儿的产品:
我怀疑{
for(i=0; i<FNR; i++)
{
avg=($3+$4+$5+$6)/4;
printf("Student %d, %s %s, %.2f\n", i, $1, $2, avg);
}
}
表达式是否存在问题,导致每个循环的行变得困难。
它应该如何?
答案 0 :(得分:2)
如果学生&#39;名称在您不需要for
循环
avg=($3+$4+$5+$6)/4;
printf("Student %d, %s %s, %.2f\n", NR, $1, $2, avg);
您可以使用for
循环来计算总和(如果您要添加4个以上的字段,这可能很方便):
for (i=3;i<7;i++) avg+=$i;
avg=avg/4;
printf("Student %d, %s %s, %.2f\n", NR, $1, $2, avg)}