AWK - Fonctions de chaîne

AWK possède les fonctions String intégrées suivantes -

asort (arr [, d [, comment]])

Cette fonction trie le contenu de arr en utilisant les règles normales de GAWK pour comparer les valeurs, et remplace les index des valeurs triées arr avec des entiers séquentiels commençant par 1.

Exemple

[jerry]$ awk 'BEGIN {
   arr[0] = "Three"
   arr[1] = "One"
   arr[2] = "Two"
   print "Array elements before sorting:"
   
   for (i in arr) {
      print arr[i]
   }
   asort(arr)
   print "Array elements after sorting:"
   
   for (i in arr) {
      print arr[i]
   }
}'

En exécutant ce code, vous obtenez le résultat suivant -

Production

Array elements before sorting:
Three
One
Two
Array elements after sorting:
One
Three
Two

asorti (arr [, d [, comment]])

Le comportement de cette fonction est le même que celui de asort(), sauf que les index de tableau sont utilisés pour le tri.

Exemple

[jerry]$ awk 'BEGIN {
   arr["Two"] = 1
   arr["One"] = 2
   arr["Three"] = 3
   asorti(arr)
   print "Array indices after sorting:"
   
   for (i in arr) {
      print arr[i]
   }
}'

En exécutant ce code, vous obtenez le résultat suivant -

Production

Array indices after sorting:
One
Three
Two

gsub (regex, sous, chaîne)

gsubsignifie substitution globale. Il remplace chaque occurrence de regex par la chaîne donnée (sous). Le troisième paramètre est facultatif. S'il est omis, alors $ 0 est utilisé.

Exemple

[jerry]$ awk 'BEGIN {
   str = "Hello, World"
   print "String before replacement = " str
   
   gsub("World", "Jerry", str)
   print "String after replacement = " str
}'

En exécutant ce code, vous obtenez le résultat suivant -

Production

String before replacement = Hello, World
String after replacement = Hello, Jerry

index (str, sous)

Il vérifie si sub est une sous-chaîne de strou pas. En cas de succès, il renvoie la position où le sous commence; sinon, il renvoie 0. Le premier caractère destr est en position 1.

Exemple

[jerry]$ awk 'BEGIN {
   str = "One Two Three"
   subs = "Two"
   ret = index(str, subs)
   
   printf "Substring \"%s\" found at %d location.\n", subs, ret
}'

En exécutant ce code, vous obtenez le résultat suivant -

Production

Substring "Two" found at 5 location.

longueur (str)

Il renvoie la longueur d'une chaîne.

Exemple

[jerry]$ awk 'BEGIN {
   str = "Hello, World !!!"
   print "Length = ", length(str)
}'

En exécutant ce code, vous obtenez le résultat suivant -

Length = 16

match (str, regex)

Il renvoie l'index de la première correspondance la plus longue de regex en chaîne str. Il renvoie 0 si aucune correspondance n'est trouvée.

Exemple

[jerry]$ awk 'BEGIN {
   str = "One Two Three"
   subs = "Two"
   ret = match(str, subs)
  
   printf "Substring \"%s\" found at %d location.\n", subs, ret
}'

En exécutant ce code, vous obtenez le résultat suivant -

Production

Substring "Two" found at 5 location

split (str, arr, regex)

Cette fonction divise la chaîne str dans des champs par expression régulière regex et les champs sont chargés dans le tableau arr. Siregex est omis, alors FS est utilisé.

Exemple

[jerry]$ awk 'BEGIN {
   str = "One,Two,Three,Four"
   split(str, arr, ",")
   print "Array contains following values"
   
   for (i in arr) {
      print arr[i]
   }
}'

En exécutant ce code, vous obtenez le résultat suivant -

Production

Array contains following values
One
Two
Three
Four

printf (format, liste d'exprime)

Cette fonction renvoie une chaîne construite à partir de expr-list selon le format.

Exemple

[jerry]$ awk 'BEGIN {
   param = 1024.0
   result = sqrt(param)
   
   printf "sqrt(%f) = %f\n", param, result
}'

En exécutant ce code, vous obtenez le résultat suivant -

Production

sqrt(1024.000000) = 32.000000

strtonum (str)

Cette fonction examine stret renvoie sa valeur numérique. Si str commence par un 0 non significatif, il est traité comme un nombre octal. Si str commence par un 0x ou 0X, il est considéré comme un nombre hexadécimal. Sinon, supposez qu'il s'agit d'un nombre décimal.

Exemple

[jerry]$ awk 'BEGIN {
   print "Decimal num = " strtonum("123")
   print "Octal num = " strtonum("0123")
   print "Hexadecimal num = " strtonum("0x123")
}'

En exécutant ce code, vous obtenez le résultat suivant -

Production

Decimal num = 123
Octal num = 83
Hexadecimal num = 291

sub (regex, sous, chaîne)

Cette fonction effectue une seule substitution. Il remplace la première occurrence du modèle regex par la chaîne donnée (sous). Le troisième paramètre est facultatif. S'il est omis, $ 0 est utilisé.

Exemple

[jerry]$ awk 'BEGIN {
   str = "Hello, World"
   print "String before replacement = " str
   
   sub("World", "Jerry", str)
   print "String after replacement = " str
}'

En exécutant ce code, vous obtenez le résultat suivant -

Production

String before replacement = Hello, World
String after replacement = Hello, Jerry

substr (str, début, l)

Cette fonction renvoie la sous-chaîne de string str, à partir de l'index start de longueur l. Si la longueur est omise, le suffixe destr à partir de l'index start est retourné.

Exemple

[jerry]$ awk 'BEGIN {
   str = "Hello, World !!!"
   subs = substr(str, 1, 5)

   print "Substring = " subs
}'

En exécutant ce code, vous obtenez le résultat suivant -

Production

Substring = Hello

tolower (str)

Cette fonction renvoie une copie de chaîne str avec tous les caractères majuscules convertis en minuscules.

Exemple

[jerry]$ awk 'BEGIN {
   str = "HELLO, WORLD !!!"
   print "Lowercase string = " tolower(str)
}'

En exécutant ce code, vous obtenez le résultat suivant -

Production

Lowercase string = hello, world !!!

toupper (str)

Cette fonction renvoie une copie de chaîne str avec tous les caractères minuscules convertis en majuscules.

Exemple

[jerry]$ awk 'BEGIN {
   str = "hello, world !!!"
   print "Uppercase string = " toupper(str)
}'

En exécutant ce code, vous obtenez le résultat suivant -

Production

Uppercase string = HELLO, WORLD !!!