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 !!!