Awk: Übungen: Aktionen: Lsg40
Lösungen Bearbeiten
zu 1 Bearbeiten
3 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 Bearbeiten
2 -1
Die Dekrementierung erfolgt vor Abarbeitung des print-Befehls.
zu 3 Bearbeiten
0 0
zu 4 Bearbeiten
1 1
zu 5 Bearbeiten
6
zu 6 Bearbeiten
1