AWK - Funciones de cadena

AWK tiene las siguientes funciones de cadena integradas:

asort (arr [, d [, cómo]])

Esta función ordena el contenido de arr usando las reglas normales de GAWK para comparar valores y reemplaza los índices de los valores ordenados arr con números enteros secuenciales que comienzan con 1.

Ejemplo

[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]
   }
}'

Al ejecutar este código, obtiene el siguiente resultado:

Salida

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

asorti (arr [, d [, cómo]])

El comportamiento de esta función es el mismo que el de asort(), excepto que los índices de la matriz se utilizan para ordenar.

Ejemplo

[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]
   }
}'

Al ejecutar este código, obtiene el siguiente resultado:

Salida

Array indices after sorting:
One
Three
Two

gsub (expresión regular, sub, cadena)

gsubsignifica sustitución global. Reemplaza cada ocurrencia de regex con la cadena dada (sub). El tercer parámetro es opcional. Si se omite, se usa $ 0.

Ejemplo

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

Al ejecutar este código, obtiene el siguiente resultado:

Salida

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

índice (str, sub)

Comprueba si sub es una subcadena de stro no. Si tiene éxito, devuelve la posición donde comienza el sub; de lo contrario, devuelve 0. El primer carácter destr está en la posición 1.

Ejemplo

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

Al ejecutar este código, obtiene el siguiente resultado:

Salida

Substring "Two" found at 5 location.

longitud (str)

Devuelve la longitud de una cadena.

Ejemplo

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

Al ejecutar este código, obtiene el siguiente resultado:

Length = 16

coincidir (str, regex)

Devuelve el índice de la primera coincidencia más larga de regex en cuerda str. Devuelve 0 si no se encuentra ninguna coincidencia.

Ejemplo

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

Al ejecutar este código, obtiene el siguiente resultado:

Salida

Substring "Two" found at 5 location

dividir (str, arr, regex)

Esta función divide la cadena str en campos por expresión regular regex y los campos se cargan en la matriz arr. Siregex se omite, entonces se utiliza FS.

Ejemplo

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

Al ejecutar este código, obtiene el siguiente resultado:

Salida

Array contains following values
One
Two
Three
Four

printf (formato, lista de expr)

Esta función devuelve una cadena construida a partir de expr-list según formato.

Ejemplo

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

Al ejecutar este código, obtiene el siguiente resultado:

Salida

sqrt(1024.000000) = 32.000000

strtonum (str)

Esta función examina stry devuelve su valor numérico. Si str comienza con un 0 inicial, se trata como un número octal. Si str comienza con 0x o 0X inicial, se toma como un número hexadecimal. De lo contrario, suponga que es un número decimal.

Ejemplo

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

Al ejecutar este código, obtiene el siguiente resultado:

Salida

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

sub (expresión regular, sub, cadena)

Esta función realiza una sola sustitución. Reemplaza la primera aparición del patrón de expresiones regulares con la cadena dada (sub). El tercer parámetro es opcional. Si se omite, se usa $ 0.

Ejemplo

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

Al ejecutar este código, obtiene el siguiente resultado:

Salida

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

substr (str, inicio, l)

Esta función devuelve la subcadena de cadena str, comenzando en el índice start de longitud l. Si se omite la longitud, el sufijo destr comenzando en el índice start es regresado.

Ejemplo

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

   print "Substring = " subs
}'

Al ejecutar este código, obtiene el siguiente resultado:

Salida

Substring = Hello

tolower (str)

Esta función devuelve una copia de la cadena str con todos los caracteres en mayúscula convertidos a minúsculas.

Ejemplo

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

Al ejecutar este código, obtiene el siguiente resultado:

Salida

Lowercase string = hello, world !!!

toupper (str)

Esta función devuelve una copia de la cadena str con todos los caracteres en minúscula convertidos a mayúsculas.

Ejemplo

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

Al ejecutar este código, obtiene el siguiente resultado:

Salida

Uppercase string = HELLO, WORLD !!!