AWK - Funzioni stringa
AWK ha le seguenti funzioni String incorporate:
asort (arr [, d [, how]])
Questa funzione ordina il contenuto di arr utilizzando le normali regole di GAWK per il confronto dei valori e sostituisce gli indici dei valori ordinati arr con numeri interi sequenziali che iniziano con 1.
Esempio
[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]
}
}'
Eseguendo questo codice, ottieni il seguente risultato:
Produzione
Array elements before sorting:
Three
One
Two
Array elements after sorting:
One
Three
Two
asorti (arr [, d [, come]])
Il comportamento di questa funzione è lo stesso di quello di asort(), tranne per il fatto che gli indici dell'array vengono utilizzati per l'ordinamento.
Esempio
[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]
}
}'
Eseguendo questo codice, ottieni il seguente risultato:
Produzione
Array indices after sorting:
One
Three
Two
gsub (regex, sub, string)
gsubsta per sostituzione globale. Sostituisce ogni occorrenza di regex con la stringa data (sub). Il terzo parametro è facoltativo. Se viene omesso, viene utilizzato $ 0.
Esempio
[jerry]$ awk 'BEGIN {
str = "Hello, World"
print "String before replacement = " str
gsub("World", "Jerry", str)
print "String after replacement = " str
}'
Eseguendo questo codice, ottieni il seguente risultato:
Produzione
String before replacement = Hello, World
String after replacement = Hello, Jerry
index (str, sub)
Controlla se sub è una sottostringa di stro no. In caso di successo, restituisce la posizione in cui inizia il sub; altrimenti restituisce 0. Il primo carattere distr è in posizione 1.
Esempio
[jerry]$ awk 'BEGIN {
str = "One Two Three"
subs = "Two"
ret = index(str, subs)
printf "Substring \"%s\" found at %d location.\n", subs, ret
}'
Eseguendo questo codice, ottieni il seguente risultato:
Produzione
Substring "Two" found at 5 location.
lunghezza (str)
Restituisce la lunghezza di una stringa.
Esempio
[jerry]$ awk 'BEGIN {
str = "Hello, World !!!"
print "Length = ", length(str)
}'
Eseguendo questo codice, ottieni il seguente risultato:
Length = 16
match (str, regex)
Restituisce l'indice della prima corrispondenza più lunga di regex in stringa str. Restituisce 0 se non viene trovata alcuna corrispondenza.
Esempio
[jerry]$ awk 'BEGIN {
str = "One Two Three"
subs = "Two"
ret = match(str, subs)
printf "Substring \"%s\" found at %d location.\n", subs, ret
}'
Eseguendo questo codice, ottieni il seguente risultato:
Produzione
Substring "Two" found at 5 location
split (str, arr, regex)
Questa funzione divide la stringa str nei campi tramite un'espressione regolare regex e i campi vengono caricati nell'array arr. Seregex viene omesso, quindi viene utilizzato FS.
Esempio
[jerry]$ awk 'BEGIN {
str = "One,Two,Three,Four"
split(str, arr, ",")
print "Array contains following values"
for (i in arr) {
print arr[i]
}
}'
Eseguendo questo codice, ottieni il seguente risultato:
Produzione
Array contains following values
One
Two
Three
Four
printf (formato, expr-list)
Questa funzione restituisce una stringa costruita da expr-list secondo il formato.
Esempio
[jerry]$ awk 'BEGIN {
param = 1024.0
result = sqrt(param)
printf "sqrt(%f) = %f\n", param, result
}'
Eseguendo questo codice, ottieni il seguente risultato:
Produzione
sqrt(1024.000000) = 32.000000
strtonum (str)
Questa funzione esamina stre restituisce il suo valore numerico. Se str inizia con uno 0 iniziale, viene trattato come un numero ottale. Se str inizia con uno 0x o 0X iniziale, viene considerato un numero esadecimale. Altrimenti, supponi che sia un numero decimale.
Esempio
[jerry]$ awk 'BEGIN {
print "Decimal num = " strtonum("123")
print "Octal num = " strtonum("0123")
print "Hexadecimal num = " strtonum("0x123")
}'
Eseguendo questo codice, ottieni il seguente risultato:
Produzione
Decimal num = 123
Octal num = 83
Hexadecimal num = 291
sub (regex, sub, string)
Questa funzione esegue una singola sostituzione. Sostituisce la prima occorrenza del pattern regex con la stringa data (sub). Il terzo parametro è facoltativo. Se viene omesso, viene utilizzato $ 0.
Esempio
[jerry]$ awk 'BEGIN {
str = "Hello, World"
print "String before replacement = " str
sub("World", "Jerry", str)
print "String after replacement = " str
}'
Eseguendo questo codice, ottieni il seguente risultato:
Produzione
String before replacement = Hello, World
String after replacement = Hello, Jerry
substr (str, start, l)
Questa funzione restituisce la sottostringa di stringa str, a partire da index start di lunghezza l. Se la lunghezza viene omessa, il suffisso distr a partire da index start viene restituito.
Esempio
[jerry]$ awk 'BEGIN {
str = "Hello, World !!!"
subs = substr(str, 1, 5)
print "Substring = " subs
}'
Eseguendo questo codice, ottieni il seguente risultato:
Produzione
Substring = Hello
tolower (str)
Questa funzione restituisce una copia di string str con tutti i caratteri maiuscoli convertiti in minuscoli.
Esempio
[jerry]$ awk 'BEGIN {
str = "HELLO, WORLD !!!"
print "Lowercase string = " tolower(str)
}'
Eseguendo questo codice, ottieni il seguente risultato:
Produzione
Lowercase string = hello, world !!!
toupper (str)
Questa funzione restituisce una copia di string str con tutti i caratteri minuscoli convertiti in maiuscole.
Esempio
[jerry]$ awk 'BEGIN {
str = "hello, world !!!"
print "Uppercase string = " toupper(str)
}'
Eseguendo questo codice, ottieni il seguente risultato:
Produzione
Uppercase string = HELLO, WORLD !!!