Les fonctions personnelles peuvent être définies dans le script awk, en dehors des blocs d'instructions, ou dans un autre script qui sera également appelé par l'option -f <script>.
Une fonction se définit par le mot clé function suivi du nom de la fonction et de ses paramètres. Une fonction peut recevoir de 0 à n arguments et retourner une valeur explicite.
Syntaxe
function nom_fonction (param1, param2, ..., paramn) {
instructions
return valeur
}
Tous les paramètres de la fonction sont des variables locales. Toute autre variable définie dans la fonction est globale.
Appel d'une fonction
valeur=nom_fonction(val1, val2, ..., valn)
Il ne doit pas y avoir d'espace entre le nom de la fonction et la parenthèse ouvrante.
Exemple
$ nl script14.awk
1 function modulo(nb){
2 mod=nb%2
3 if(mod==0){
4 chaine=sprintf("%d est un nombre pair" , nb)
5 }
6 else{
7 chaine=sprintf("%d est un nombre impair" , nb)
8 }
9 return chaine
10 }
11 {
12 for(i=1;i<=NF;i++){
13 print modulo($i)
14 }
15 }
$ echo "20 21 23 56 43 2.4 rr" | awk -f script14.awk
20 est un nombre pair
21 est un nombre impair
23 est un nombre impair
56 est un nombre pair
43 est un nombre impair
2 est un nombre impair
0 est un nombre pair
$