AWK - Funzioni aritmetiche

AWK ha le seguenti funzioni aritmetiche incorporate:

atan2 (y, x)

Restituisce l'arcotangente di (y / x) in radianti. Il seguente esempio lo dimostra:

Esempio

[jerry]$ awk 'BEGIN {
   PI = 3.14159265
   x = -10
   y = 10
   result = atan2 (y,x) * 180 / PI;
   
   printf "The arc tangent for (x=%f, y=%f) is %f degrees\n", x, y, result
}'

Eseguendo questo codice, ottieni il seguente risultato:

Produzione

The arc tangent for (x=-10.000000, y=10.000000) is 135.000000 degrees

cos (expr)

Questa funzione restituisce il coseno di expr, che è espresso in radianti. Il seguente esempio lo dimostra:

Esempio

[jerry]$ awk 'BEGIN {
   PI = 3.14159265
   param = 60
   result = cos(param * PI / 180.0);

   printf "The cosine of %f degrees is %f.\n", param, result
}'

Eseguendo questo codice, ottieni il seguente risultato:

Produzione

The cosine of 60.000000 degrees is 0.500000.

exp (expr)

Questa funzione viene utilizzata per trovare il valore esponenziale di una variabile.

Esempio

[jerry]$ awk 'BEGIN {
   param = 5
   result = exp(param);
   
   printf "The exponential value of %f is %f.\n", param, result
}'

Eseguendo questo codice, ottieni il seguente risultato:

Produzione

The exponential value of 5.000000 is 148.413159.

int (espr)

Questa funzione tronca il file expra un valore intero. Il seguente esempio lo dimostra:

[jerry]$ awk 'BEGIN {
   param = 5.12345
   result = int(param)
   
   print "Truncated value =", result
}'

Eseguendo questo codice, ottieni il seguente risultato:

Truncated value = 5

log (espr)

Questa funzione calcola il logaritmo naturale di una variabile.

Esempio

[jerry]$ awk 'BEGIN {
   param = 5.5
   result = log (param)
   
   printf "log(%f) = %f\n", param, result
}'

Eseguendo questo codice, ottieni il seguente risultato:

Produzione

log(5.500000) = 1.704748

rand

Questa funzione restituisce un numero casuale N, compreso tra 0 e 1, tale che 0 <= N <1. Ad esempio, l'esempio seguente genera tre numeri casuali

Esempio

[jerry]$ awk 'BEGIN {
   print "Random num1 =" , rand()
   print "Random num2 =" , rand()
   print "Random num3 =" , rand()
}'

Eseguendo questo codice, ottieni il seguente risultato:

Produzione

Random num1 = 0.237788
Random num2 = 0.291066
Random num3 = 0.845814

sin (expr)

Questa funzione restituisce il seno di expr, che è espresso in radianti. Il seguente esempio lo dimostra:

Esempio

[jerry]$ awk 'BEGIN {
   PI = 3.14159265
   param = 30.0
   result = sin(param * PI /180)

   printf "The sine of %f degrees is %f.\n", param, result
}'

Eseguendo questo codice, ottieni il seguente risultato:

Produzione

The sine of 30.000000 degrees is 0.500000.

sqrt (espr)

Questa funzione restituisce la radice quadrata di expr.

Esempio

[jerry]$ awk 'BEGIN {
   param = 1024.0
   result = sqrt(param)
   
   printf "sqrt(%f) = %f\n", param, result
}'

Eseguendo questo codice, ottieni il seguente risultato:

Produzione

sqrt(1024.000000) = 32.000000

srand ([expr])

Questa funzione genera un numero casuale utilizzando il valore seed. Utilizzaexprcome nuovo seme per il generatore di numeri casuali. In assenza di expr, utilizza l'ora del giorno come valore seed.

Esempio

[jerry]$ awk 'BEGIN {
   param = 10
   
   printf "srand() = %d\n", srand()
   printf "srand(%d) = %d\n", param, srand(param)
}'

Eseguendo questo codice, ottieni il seguente risultato -

Produzione

srand() = 1
srand(10) = 1417959587