En AWK, il n'existe aucune fonction «ABS» permettant de calculer la valeur absolue d'un nombre. Pour remédier à se problème, il suffit de créer une fonction ressemblant à ceci :
- function abs(a) {
- if(a<0) a=-a;
- return a;
- }
Voici un exemple montrant une utilisation de la valeur absolue avec des parenthèses :
- #! /bin/sh
-
- BEGIN {
- print "Abs(9*(-7))=" abs(9*(-7));
- exit;
- }
-
- function abs(a) {
- if(a<0) a=-a;
- return a;
- }
on obtiendra le résultat suivant :
Abs(9*(-7))=63Voici un exemple montrant une utilisation plus classique de la valeur absolue :
- #! /bin/sh
-
- BEGIN {
- print "Abs(1)=" abs(1);
- print "Abs(-1)=" abs(-1);
- print "Abs(30.2)=" abs(30.2);
- print "Abs(-35.4)=" abs(-35.4);
- exit;
- }
-
- function abs(a) {
- if(a<0) a=-a;
- return a;
- }
on obtiendra le résultat suivant :
Abs(1)=1Abs(-1)=1
Abs(30.2)=30.2
Abs(-35.4)=35.4
Voici un exemple montrant la différence de résultats avec la fonction «SGN» :
- #! /bin/sh
-
- BEGIN {
- print "abs(1)=" abs(1) ", sgn(1)=" sgn(1);
- print "abs(-1)=" abs(-1) ", sgn(-1)=" sgn(-1);
- print "abs(0)=" abs(0) ", sgn(0)=" sgn(0);
- print "abs(5)=" abs(5) ", sgn(5)=" sgn(5);
- print "abs(10)=" abs(10) ", sgn(10)=" sgn(10);
- print "abs(-17)=" abs(-17) ", sgn(-17)=" sgn(-17);
- print "abs(27.4)=" abs(27.4) ", sgn(27.4)=" sgn(27.4);
- print "abs(-12.13)=" abs(-12.13) ", sgn(-12.13)=" sgn(-12.13);
- exit;
- }
-
- function abs(a) {
- if(a<0) a=-a;
- return a;
- }
-
- function sgn(valeur) {
- if(valeur < 0) return-1; else
- if(valeur = 0) return 0;
- return 1;
- }
on obtiendra le résultat suivant :
abs(1)= 1, sgn(1)= 1abs(-1)= 1, sgn(-1)=-1
abs(0)= 0, sgn(0)= 0
abs(5)= 5, sgn(5)= 1
abs(10)= 10, sgn(10)= 1
abs(-17)= 17, sgn(-17)=-1
abs(27.4)= 27.4, sgn(27.4)= 1
abs(-12.13)= 12.13, sgn(-12.13)=-1
Voici un exemple montrant comment effectuer une comparaison avec Abs :
- #! /bin/sh
-
- BEGIN {
- A = -10;
- B = 6;
- if(abs(A) > abs(B)) print "|a| > |b|";
- if(abs(A) == abs(B)) print "|a| = |b|";
- if(abs(A) < abs(B)) print "|a| < |b|";
- exit;
- }
-
- function abs(a) {
- if(a<0) a=-a;
- return a;
- }
on obtiendra le résultat suivant :
|a| > |b|Voici un exemple montrant comment calculer la distance entre deux nombres à l'aide de la fonction Abs :
- #! /bin/sh
-
- BEGIN {
- print "La distance entre -8 et 10 = " abs(-8 - 10);
- print "La distance entre 4 et 8 = " abs(4 - 8);
- print "La distance entre 0 et 5 = " abs(0 - 5);
- print "La distance entre -100 et 100 = " abs(-100 - 100);
- exit;
- }
-
- function abs(a) {
- if(a<0) a=-a;
- return a;
- }
on obtiendra le résultat suivant :
La distance entre -8 et 10 = 18La distance entre 4 et 8 = 4
La distance entre 0 et 5 = 5
La distance entre -100 et 100 = 200