Kann mir bitte jemand das Skript für den Linux-Befehl zeigen oder mit mir teilen, um aus einer Datei bis zum Ende zu lesen und das Quadrat aller gelesenen Zahlen zu berechnen. Das Ergebnis dieser Berechnung muss in einer Ausgabedatei gespeichert werden.
Antwort1
$ echo 3.14 >> /tmp/numbers
$ echo 2 >> /tmp/numbers
$ echo 4.0 >> /tmp/numbers
$ awk '{print $1 * $1}' < /tmp/numbers
9.8596
4
16
$ awk '{print $1 * $1}' < /tmp/numbers > /path/to/OutputFile
Antwort2
Verwenden von ksh93
und bc
als Rechendienst und vorausgesetzt, dass die Datei numbers
in jeder Zeile eine Zahl enthält:
bc -l |&
bc_pid="$!"
while read num; do
print -p "$num * $num"
read -p sqr
printf '%g*%g = %g\n' "$num" "$num" "$sqr"
done <numbers
kill "$bc_pid"
Das Äquivalent in bash
:
coproc bc -l
bc_pid="$!"
while read num; do
printf '%g * %g\n' "$num" "$num" >&"${COPROC[1]}"
read sqr <&"${COPROC[0]}"
printf '%g*%g = %g\n' "$num" "$num" "$sqr"
done <numbers
kill "$bc_pid"