GNU/Linux >> Znalost Linux >  >> Linux

9 výkonných vestavěných funkcí Awk pro numerické funkce

Podobně jako vestavěné proměnné awk má awk také mnoho vestavěných funkcí pro numerické, řetězcové, vstupní a výstupní operace. Awk má následující tři typy vestavěných kategorií funkcí na vysoké úrovni.

  1. Vestavěné funkce pro numerické operace
  2. Vestavěné funkce pro operace s řetězci
  3. Vestavěné funkce pro operace vstupu a výstupu


Pro ty, kteří s awk začínají, se prosím podívejte na naši sérii příkladů awk, kde jsme diskutovali o — úvodu awk, proměnných awk a operátorech awk.

V tomto článku se podíváme na vestavěné funkce awk Numeric.

1. Funkce Awk int(n)

Funkce int() vám poskytne celočíselnou část daného argumentu. Výsledkem je nejnižší celá část daného n. n je libovolné číslo s nebo bez pohyblivé řádové čárky. Pokud zadáte celé číslo jako argument, tato funkce vrátí totéž. U čísla s plovoucí desetinnou čárkou se zkrátí.

Příklad

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

2. Funkce Awk log(n)

funkce log() poskytuje přirozený logaritmus daného argumentu n. log() vrací hodnotu logaritmu pouze v případě, že n je kladné číslo. Pokud zadáte jakékoli neplatné číslo (i záporné), vyvolá to chybu.

Příklad

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

Ve výše uvedeném výstupu můžete identifikovat, že log(0) je nekonečno, což bylo zobrazeno jako -inf, a log(-1) vám dává chybu nan (není číslo)

3. Funkce Awk sqrt(n)

Funkce sqrt udává kladnou druhou odmocninu pro dané celé číslo n. Tato funkce také přijímá kladné číslo a vrací chybu nan, pokud zadáte záporné číslo jako argument.

Příklad

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

4. Funkce Awk exp(n)

exp funkce poskytuje e mocninu n.

Příklad

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

Ve výše uvedeném výstupu pro exp(1234346) získáte nekonečno výstupu, protože to je mimo rozsah.

5. Funkce Awk sin(n)

Funkce sin() dává sinusovou hodnotu n, přičemž n je v radiánech.

Příklad

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

6. Funkce Awk cos(n)

cos() vrací kosinusovou hodnotu n, přičemž n je v radiánech.

Příklad

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

7. Awk atan2(m,n) Funkce

Tato funkce vám poskytne arkus-tangens m/n v radiánech.

Příklad

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

}'
0.588003

8. Funkce Awk rand()

rand() se používá ke generování náhodného čísla mezi 0 a 1. Nikdy nevrací 0 a 1. Vždy vrací hodnotu mezi 0 a 1. Čísla jsou náhodná v jednom awk běhu, ale předvídatelná od běhu k běhu. Awk používá nějaký algoritmus pro generování náhodných čísel. Protože je tento algoritmus pevný, čísla jsou opakovatelná.

Příklad

Následující příklad vygeneruje 1000 náhodných čísel od 0 do 100 a ukazuje, jak často bylo každé číslo použito

$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";
}
}
$

Sem jsme vložili část výstupu výše uvedeného skriptu.

$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

Z výše uvedeného výstupu se ujistěte, že funkce rand() může velmi často generovat opakovatelná čísla.

9. Funkce Awk srand(n)

srand() se používá k inicializaci náhodného generování s daným argumentem n. Takže vždy, když se spustí provádění programu, začne generovat číslo od n. Pokud není zadán žádný argument, použije se ke generování semene čas dne.

Příklad. Vygenerujte 5 náhodných čísel od 5 do 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;
}
}

V tomto srand.awk pomocí funkce rand() vygenerujte číslo a vynásobte ho maximální hodnotou, abyste získali číslo s maximem 50, a zkontrolujte, zda vygenerované náhodné číslo již v poli existuje, pokud neexistuje, zvýšit jeho index a také zvýšit počet smyček. takže vygeneruje 5 čísel, jako je toto, a nakonec ve smyčce for od minimálního po maximum a vypíše pouze index, který má hodnotu.

Zde je výstup výše uvedeného skriptu

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

Linux
  1. Začínáme s awk, výkonným nástrojem pro analýzu textu

  2. Linux C Programming Tutorial Část 18:Rekurzivní funkce

  3. Funkce v proměnných Shell?

  1. Jak volat funkci Bash ve skriptu Bash uvnitř Awk?

  2. Bash Beginner Series #9:Použití funkcí v Bash

  3. TagSpaces – výkonný organizátor souborů orientovaný na značky pro Linux

  1. NordPass – výkonný správce hesel pro Linux

  2. Jak vytvářet a volat funkce v Bash

  3. grep pro termín a vyloučit jiný termín