Ich habe eine Datei in einem Studenten Name, Vorname und 4 Punkte der Klassen beziehe „Marken“ mit Linien Titel nahm er in diesem Semester für jede Zeile wie folgt aus:Awk: Drucken der Durchschnitt jeder Zeile
John McJohn 56 68 31 99
Ronald McDonald 89 89 60 75
Boaty McBoatface 50 50 50 50
Ich versuche ein awk-Skript zu erstellen, das jede Zeile mit der Durchschnittsmarkierung für jede Zeile (aka jeder Schüler) und die Nummer der Zeile, die er ist, druckt.
f.e.
Student 1, John McJohn, 63,5
Student 2, Ronald McDonald, 78.25
und so weiter und so weiter.
Was kam ich mit ist die folgende:
{
for(i=0; i<FNR; i++)
{
avg=($3+$4+$5+$6)/4;
printf("Student %d, %s %s, %.2f\n", i, $1, $2, avg);
}
}
Aber der Ausgang dieses ist ein Chaos, das wie ein kartesisches Produkt scheint:
ich dort bin Verdacht ist Etwas stimmt nicht mit dem Ausdruck i<FNR
überein, der die Zeilen für jede Schleife ändert.
Wie sollte es gewesen sein?
ich glaube, Sie '% .2f' bedeuten, nicht mit dem $ -Zeichen – user2314737
Sie haben keine Schleife. awk erledigt das Schleifen für jede Zeile. So etwas ist genug: 'awk '{print" Student "-NR", ", $ 1 $ 2", ", ($ 3 + $ 4 + $ 5 + $ 6)/4}" yourfile ". –
@ user2314737 es ist ein Tippfehler, ich bearbeite es gerade jetzt. – Coursal