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