GNU/Linux >> Linux Esercitazione >  >> Linux

9 potenti funzioni integrate di Awk per i numeri

Simile alle variabili integrate awk, awk ha anche molte funzioni integrate per numerici, stringhe, input e operazioni di output. Awk ha i seguenti tre tipi di categorie di funzioni integrate di alto livello.

  1. Funzioni integrate per operazioni numeriche
  2. Funzioni integrate per operazioni sulle stringhe
  3. Funzioni integrate per operazioni di Input Output


Per coloro che non conoscono awk, fare riferimento alla nostra serie di esempi in corso, in cui abbiamo discusso di:introduzione awk, variabili awk e operatori awk.

In questo articolo, esaminiamo le funzioni integrate di awk Numeric.

1. Funzione Awk int(n)

int() ti dà la parte intera dell'argomento dato. Questo produce la parte intera più bassa di un dato n. n è qualsiasi numero con o senza virgola mobile. Se dai il numero intero come argomento, questa funzione restituisce lo stesso. Per i numeri in virgola mobile, tronca.

Esempio

$ awk 'BEGIN{
print int(3.534);
print int(4);
print int(-5.223);
print int(-5);
}'
3
4
-5
-5

2. Funzione Awk log(n)

log() fornisce la funzione logaritmica naturale di un dato argomento n. log() restituisce il valore del logaritmo solo quando n è un numero positivo. Se dai un numero non valido (anche negativo) viene generato un errore.

Esempio

$ awk 'BEGIN{
print log(12);
print log(0);
print log(1);
print log(-1);
}'
2.48491
-inf
0
nan

Nell'output sopra puoi identificare che log(0) è infinito che è stato mostrato come -inf e log(-1) ti dà l'errore nan (non un numero)

3. Funzione Awk sqrt(n)

La funzione sqrt fornisce la radice quadrata positiva per il dato intero n. Questa funzione accetta anche il numero positivo e restituisce un errore nan se fornisci il numero negativo come argomento.

Esempio

$ awk 'BEGIN{
print sqrt(16);
print sqrt(0);
print sqrt(-12);
}'
4
0
nan

4. Funzione Awk exp(n)

La funzione exp fornisce e alla potenza di n.

Esempio

$ awk 'BEGIN{
print exp(123434346);
print exp(0);
print exp(-12);
}'
inf
1
6.14421e-06

Nell'output sopra, per exp(1234346), ti dà l'output infinity, perché questo è fuori intervallo.

5. Funzione Awk sin(n)

sin() fornisce un valore seno di n, con n in radianti.

Esempio

$ awk 'BEGIN {
print sin(90);
print sin(45);
}'
0.893997
0.850904

6. Awk cos(n) Funzione

cos() restituisce il valore del coseno di n, con n in radianti.

Esempio

$ awk 'BEGIN {
print cos(90);
print cos(45);
}'
-0.448074
0.525322

7. Funzione Awk atan2(m,n)

Questa funzione fornisce l'arcotangente di m/n in radianti.

Esempio

$ awk 'BEGIN {
print atan2(30,45);

}'
0.588003

8. Funzione Awk rand()

rand() viene utilizzato per generare il numero casuale compreso tra 0 e 1. Non restituisce mai 0 e 1. Restituisce sempre il valore compreso tra 0 e 1. I numeri sono casuali con un'esecuzione awk, ma prevedibili da un'esecuzione all'altra. Awk utilizza alcuni algoritmi per generare i numeri casuali. Poiché questo algoritmo è fisso, i numeri sono ripetibili.

Esempio

L'esempio seguente genera 1000 numeri casuali compresi tra 0 e 100 e mostra la frequenza con cui è stato utilizzato ciascun numero

$cat rand.awk
BEGIN {
while(i<1000)
{
	n = int(rand()*100);
	rnd[n]++;
	i++;
}
for(i=0;i<=100;i++) {
	print i,"Occured", rnd[i], "times";
}
}
$

Ho incollato qui alcuni degli output dello script precedente.

$awk -f rand.awk
0 Occured 6 times
1 Occured 16 times
2 Occured 12 times
3 Occured 6 times
4 Occured 13 times
5 Occured 13 times
6 Occured 8 times
7 Occured 7 times
8 Occured 16 times
9 Occured 9 times
10 Occured 6 times
11 Occured 9 times
12 Occured 17 times
13 Occured 12 times

Dall'output sopra, assicurati che la funzione rand() possa generare numeri ripetibili molto spesso.

9. Funzione Awk srand(n)

srand() viene utilizzato per inizializzare la generazione casuale con l'argomento n. In modo che ogni volta che inizia l'esecuzione del programma, cominci a generare il numero da n. Se non viene fornito alcun argomento, utilizza l'ora del giorno per generare il seme.

Esempio. Genera 5 numeri casuali a partire da 5 a 50

$cat srand.awk
BEGIN {
#initialize the seed with 5.
srand(5);
# Totally I want to generate 5 numbers.
total=5;
#maximum number is 50.
max=50;
count=0;
while(count < total) {
	rnd = int(rand() * max);
	if ( array[rnd] == 0 ) {
		count++;
		array[rnd]++;
	}
}
for ( i=5; i<=max; i++) {
	if ( array[i] )
		print i;
}
}

In questo srand.awk, usando la funzione rand(), genera il numero e moltiplica per il valore massimo per produrre il numero con il massimo di 50 e controlla se il numero casuale generato esiste già nell'array, se non esiste, incrementa il suo indice e anche il conteggio del ciclo incrementale. in modo che generi 5 numeri come questo e infine nel ciclo for dal numero minimo al massimo, e stampi solo l'indice che ha il valore.

Ecco l'output dello script precedente

$ awk -f  srand.awk
9
15
26
37
39

Linux
  1. Iniziare con awk, un potente strumento di analisi del testo

  2. Nix:un potente gestore di pacchetti per Linux e Unix

  3. Come chiamare una funzione Bash nello script Bash all'interno di Awk?

  4. NordPass – Un potente gestore di password per Linux

  5. grep per termine ed escludi un altro termine

Funzioni Bash

Shell Scripting Parte V:Funzioni in Bash

Esercitazione sulla programmazione C Linux Parte 18:Funzioni ricorsive

Cmus:un potente lettore musicale per console per Linux

Bash Scripting:funzioni spiegate con esempi

Tutorial Regex per esempi di Linux (Sed e AWK).