Ich habe eine Datendatei, die ich awk
basierend auf dem letzten Datenpunkt normalisieren möchte . Daher möchte ich zuerst auf den letzten Datenpunkt zugreifen, die Daten normalisieren und dann normal verarbeiten.
Die folgende Methode, die tac
zweimal verwendet wird, erledigt die Aufgabe, ist jedoch möglicherweise komplizierter als erforderlich.
$ cat file
0 5
1 2
2 3
3 4
$ tac file | awk 'NR==1{norm=$2} {print $1, $2/norm}' | tac
0 1.25
1 0.5
2 0.75
3 1
Meine Frage lautet wie folgt: Ist es möglich, das obige Ergebnis nur mit awk zu erzielen?
Ich denke, die Antwort lautet "Nein, awk scannt die Datei Zeile für Zeile", aber ich bin offen für Vorschläge für Alternativen.
$ awk --version GNU Awk 3.1.8
. Können Sie vielleicht eine sehr kleine Erklärung hinzufügen, wie zwei Eingabedateien behandelt werden und wasnext
funktioniert?