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.
- Vestavěné funkce pro numerické operace
- Vestavěné funkce pro operace s řetězci
- 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