Quadrieren aller Zahlen in einer Datei

Quadrieren aller Zahlen in einer Datei

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 ksh93und bcals Rechendienst und vorausgesetzt, dass die Datei numbersin 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"

verwandte Informationen