Awk: Übungen: Aktionen: Lsg40
Lösungen
Bearbeitenzu 1
Bearbeiten3 0
Warum? Der Feldoperator bindet stärker, die Inkrementierung erfolgt aber erst nach Abarbeitung des print-Befehls.
Zur Verdeutlichung: Die Befehlsfolge
print $2++ print $2
könnte durch
i=$2+0 print i i+=1 print i
ersetzt werden. Beide Programmabschnitte liefern das gleiche Ergebnis.
Warnung: Theoretisch kann man sich die Anweisung $2++
zur Verdeutlichung der Priorität auch als ($2)++ vorstellen. Das sollte aber auf das Gedächtnis beschränkt bleiben und nicht Eingang in den awk-Programmcode finden. Das funktioniert nämlich nicht - Syntax Error. (i)++
ist für awk-Parser eben nicht das gleiche wie i++
.
zu 2
Bearbeiten2 -1
Die Dekrementierung erfolgt vor Abarbeitung des print-Befehls.
zu 3
Bearbeiten0 0
zu 4
Bearbeiten1 1
zu 5
Bearbeiten6
zu 6
Bearbeiten1