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