Marc_BlackJack_Rintsch schrieb:
@frostschutz: Ich teile Deine Vermutung, aber dann hätten sie im Lehrbuch IMHO besser „verwenden sie ausschliesslich und alle folgenden Befehle sinnvoll in Ihrer Lösung“ geschrieben, statt „erlaubte Befehle: …“. ☺
"Erlaubte Befehle" impliziert das ziemlich stark.
dann ist AWK ja nur dazu da, um die Ausgabe des vorherigen Schritts in einer anderen Reihenfolge und in eine Zeichenkette eingebettet auszugeben
Ja, genau so...
1. for-Schleife die 1000 Zufallszahlen ausgibt.
2. sort was diese Zufallszahlen fein säuberlich aufreiht.
3. uniq was die aufgereihten Zufallszahlen zählt (uniq zählt nur sich unmittelbar wiederholende Zeilen, daher zuerst sort)
4. awk was diese Zahlen in den gewünschten Aussage-Satz bringt.
Das ganze ist dann ein "einfacher" Einzeiler:
for …; do echo …irgendwas mit $RANDOM…; done | sort … | uniq … | awk '{ print … }'
Und sehr wahrscheinlich steht es haargenau so in der erwarteten Standardlösung drin, da gibt es nicht mehr allzuviel Möglichkeiten zum Abweichen.
Und auf die Lösung kommst du eben schrittweise durch |… weglassen:
for …; do echo …; done
# ausgabe: 1000 zufallszahlen
for …; do echo …; done | sort …
# ausgabe: 1000 zufallszahlen sortiert
for …; do echo …; done | sort … | uniq …
# ausgabe: 10 zeilen der form <anzahl> <zufallszahl>
for …; do echo …; done | sort … | uniq … | awk '{ print …; }'
# ausgabe: Zahl X kam Y mal vor.
Schrittweise weil wenn du nicht weisst, was die vorhergehenden Befehle ausgeben, dann kannst du auch nicht wissen, wie du das nach der Pipe | weiterverarbeiten sollst.
Die … darf der TE selber ausfüllen. ☺