GNU/Linux >> Tutoriels Linux >  >> Linux

9 puissantes fonctions intégrées Awk pour le numérique

Semblable aux variables intégrées awk, awk possède également de nombreuses fonctions intégrées pour les valeurs numériques, les chaînes et les entrées. , et les opérations de sortie. Awk a les trois types suivants de catégories de fonctions intégrées de haut niveau.

  1. Fonctions intégrées pour les opérations numériques
  2. Fonctions intégrées pour les opérations de chaîne
  3. Fonctions intégrées pour les opérations d'entrée-sortie


Pour ceux qui découvrent awk, veuillez vous reporter à notre série d'exemples awk en cours, où nous avons discuté de l'introduction d'awk, des variables awk et des opérateurs awk.

Dans cet article, passons en revue les fonctions intégrées d'awk Numeric.

1. Fonction Awk int(n)

La fonction int() vous donne la partie entière de l'argument donné. Cela produit la plus petite partie entière de n donné. n est un nombre quelconque avec ou sans virgule flottante. Si vous donnez le nombre entier comme argument, cette fonction renvoie la même chose. Pour les nombres à virgule flottante, il tronque.

Exemple

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

2. Fonction Awk log(n)

La fonction log() fournit le logarithmique naturel de l'argument donné n. log() renvoie la valeur du logarithme uniquement lorsque n est un nombre positif. Si vous donnez un nombre invalide (même négatif), cela génère une erreur.

Exemple

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

Dans la sortie ci-dessus, vous pouvez identifier que log(0) est l'infini qui a été affiché comme -inf, et log(-1) vous donne l'erreur nan (Pas un nombre)

3. Fonction Awk sqrt(n)

sqrt donne la racine carrée positive de l'entier donné n. Cette fonction accepte également le nombre positif, et elle renvoie nan erreur si vous donnez le nombre négatif comme argument.

Exemple

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

4. Fonction Awk exp(n)

La fonction exp fournit e à la puissance n.

Exemple

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

Dans la sortie ci-dessus, pour exp(1234346), cela vous donne la sortie infinie, car elle est hors plage.

5. Fonction Awk sin(n)

La fonction sin() donne la valeur sinusoïdale de n, avec n en radians.

Exemple

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

6. Fonction Awk cos(n)

cos() renvoie la valeur cosinus de n, avec n en radians.

Exemple

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

7. Fonction Awk atan2(m,n)

Cette fonction vous donne l'arc tangente de m/n en radians.

Exemple

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

}'
0.588003

8. Fonction Awk rand()

rand() est utilisé pour générer le nombre aléatoire entre 0 et 1. Il ne renvoie jamais 0 et 1. Il renvoie toujours la valeur entre 0 et 1. Les nombres sont aléatoires dans une exécution awk, mais prévisibles d'une exécution à l'autre. Awk utilise un algorithme pour générer les nombres aléatoires. Comme cet algorithme est fixe, les nombres sont répétables.

Exemple

L'exemple suivant génère 1000 nombres aléatoires entre 0 et 100 et montre à quelle fréquence chaque nombre a été utilisé

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

Collé une partie de la sortie du script ci-dessus ici.

$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

À partir de la sortie ci-dessus, assurez-vous que la fonction rand() peut générer des nombres répétables très souvent.

9. Fonction Awk srand(n)

srand() est utilisé pour initialiser la génération aléatoire avec l'argument donné n. Ainsi, chaque fois que l'exécution du programme démarre, il commence à générer le nombre à partir de n. Si aucun argument n'est donné, il utilise l'heure de la journée pour générer la graine.

Exemple. Générer 5 nombres aléatoires de 5 à 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;
}
}

Dans ce srand.awk, en utilisant la fonction rand(), générez le nombre et multipliez-le par la valeur maximale pour produire le nombre avec le maximum de 50, et vérifiez si le nombre aléatoire généré existe déjà dans le tableau, s'il n'existe pas, incrémente son index et incrémente le nombre de boucles. de sorte qu'il génère 5 nombres comme celui-ci et enfin dans la boucle for du nombre minimum au maximum, et imprime uniquement l'index qui a la valeur.

Voici la sortie du script ci-dessus

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

Linux
  1. Comment appeler une fonction Bash dans le script Bash à l'intérieur d'Awk ?

  2. TagSpaces - Un puissant organisateur de fichiers orienté balises pour Linux

  3. Comment créer et appeler des fonctions dans Bash

  4. 8 puissantes variables intégrées Awk - FS, OFS, RS, ORS, NR, NF, FILENAME, FNR

  5. Obtenir une liste de noms de fonctions dans un script shell

Fonctions bash

Shell Scripting Partie V :Fonctions dans Bash

Cmus - Un puissant lecteur de musique sur console pour Linux

Bash Scripting - Fonctions expliquées avec des exemples

Tutoriel Regex pour les exemples Linux (Sed &AWK)

NordPass – Un puissant gestionnaire de mots de passe pour Linux