Ich habe eine Datendatei, die ich awkbasierend 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 taczweimal 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 wasnextfunktioniert?